未从控制器drupal 8呈现模板

时间:2018-11-14 08:49:08

标签: php drupal-8

我在自定义Drupal 8模块中无法从控制器渲染模板。

我正在调用此控制器方法:

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

return $build;}

到达控制器没有问题,我可以在里面var_dump。但是模板的内容未呈现。

我的模块文件结构如下:

bretagnecom_search_engine.module src

./ src: 控制器

./ src / Controller: DefaultController.php

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

关于我在做什么错的任何想法吗?通常,我通常使用内联模板直接从控制器渲染一些html,但是这次我想将我的html隔离在他的模板文件中。

感谢大家的帮助!

1 个答案:

答案 0 :(得分:0)

我想在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