【问题标题】:Template not rendered from controller drupal 8模板未从控制器 drupal 8 呈现
【发布时间】:2018-11-14 08:49:08
【问题描述】:

我在从自定义 Drupal 8 模块中的控制器渲染模板时遇到问题。

我正在调用这个控制器方法:

  public function displayEngineUI() {
$build['#theme'] = 'bretagnecom-search-engine';

return $build;}

到达控制器没有问题,我可以在里面进行 var_dump。但是没有渲染模板的内容。

我的模块文件结构如下:

bretagnecom_search_engine.module src

./src: 控制器

./src/控制器: DefaultController.php

./模板: bretagnecom-search-engine.html.twig

知道我做错了什么吗?我通常使用 inline-template 直接从控制器渲染一些 html,但这次我想将我的 html 隔离在他的模板文件中。

感谢大家的帮助!

【问题讨论】:

    标签: php drupal-8


    【解决方案1】:

    我猜模板没有在 hook_theme() 中定义。

    首先只需将连字符改为下划线:

    public function displayEngineUI() {
      $build['#theme'] = 'bretagnecom_search_engine';
      return $build;
    }
    

    并在 bretagnecom_search_engine.module 添加:

    /**
     * Implements hook_theme().
     */
    function bretagnecom_search_engine_theme() {
    $themes = [
      'bretagnecom_search_engine' => [
        'variables' => [
          'your_custom_variable_1' => NULL,
          'your_custom_variable_2' => NULL
      ]
    ];
    

    如果您没有变量,只需删除那部分代码。

    您可以在这里找到更多信息:https://www.drupal.org/docs/8/theming/twig/create-custom-twig-templates-for-custom-module

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多