代码之家  ›  专栏  ›  技术社区  ›  NicholasByDesign

Drupal 8从自定义模块渲染自定义主题

  •  0
  • NicholasByDesign  · 技术社区  · 7 年前

    当Drupal 8第一次出现时,这对我来说一直很管用。然而,这似乎不再有效,我得到了一个错误。Drupal文档一直很可怕,因此没有解决方案。

    风俗单元

    <?php
    
    function custom_theme() {
        $theme['home_page'] = [
            'variables' => ['name' => NULL],
            'template' => 'home_page'
        ];
    
        return $theme;
    }
    
    function custom_menu(){
      $items = array();
      $items['admin/config/system/custom'] = array(
        'title' => 'Custom',
        'description' => 'Configuration Custom',
        'route_name' => 'custom.settings'
      );
      return $items;
    }
    

    风俗路由。yml公司

    custom.home:
        path: /home
        defaults: 
            _controller: Drupal\custom\Controller\RoutingController::home
        requirements:
            _permission: 'access content'
    

    src/控制器/路由控制器。php

    <?php
    
    namespace Drupal\custom\Controller;
    
    class RoutingController {
        public function home(){
            return array(
                '#title' => 'Home',
                '#theme' => 'home_page'
            );
        }
    
    }
    

    主页。html。细枝

    <main>
       <!-- some markup -->
    </main>
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   code.rider    7 年前

    您的控制器未扩展基本控制器类问题1
    试试这个

    namespace Drupal\custom\Controller;
    
    use Drupal\Core\Controller\ControllerBase;
    
    class RoutingController extends ControllerBase{
        public function home(){
            return array(
                '#title' => 'Home',
                '#theme' => 'home_page'
            );
        }
    
    }
    

    主页。html。细枝

    <main>
       <!-- some markup -->
       {{ content }}
    </main>
    

    还可以尝试使用path扩展主题挂钩

    'path' => drupal_get_path('module', 'custom') . '/templates',
    

    并将模板小枝文件放在模块/模板文件夹中