Php 自定义模块Drupal 8的细枝模板中的Access变量

Php 自定义模块Drupal 8的细枝模板中的Access变量,php,symfony,module,twig,drupal-8,Php,Symfony,Module,Twig,Drupal 8,我想在Drupal8的Twig文件中使用一个变量。该细枝变量应该适用于站点的所有页面 假设我在表单或控制器中创建了一个变量$my_variable。现在我想在我的小树枝文件中使用这个$my_变量 Like this {{ my_variable }}. 我已经尝试过这种方法: 我的模块文件: 函数我的模块主题(){ 返回[ “主题标签”=>[ 'variables'=>['my_variable'=>NULL], ], ]; } 我的控制器: public function callMe

我想在Drupal8的Twig文件中使用一个变量。该细枝变量应该适用于站点的所有页面

假设我在表单或控制器中创建了一个变量
$my_variable
。现在我想在我的小树枝文件中使用这个
$my_变量

Like this {{ my_variable }}. 
我已经尝试过这种方法:

我的模块文件:

函数我的模块主题(){
返回[
“主题标签”=>[
'variables'=>['my_variable'=>NULL],
],
];
}
我的控制器:

public function callMe() {
     $my_variable= "some data here";
     return [
          '#theme' => 'theme_tag',
          '#my_variable' => $my_variable,
     ];
}
我的树枝:

<p> {{ my_variable}} </p>
{{my_variable}

任何帮助都将不胜感激。
谢谢

mymodulename/templates/my template name.html.twig

<div>{{ my_variable }}</div>
呼叫模板:

  // Call the mail template
  $template = [
    '#theme' => 'my_template_name',
    '#my_variable' => 'my variable value',
  ];
  // Render the template
  $rendered_template = \Drupal::service('renderer')->render($template);

  return ['#markup' => $rendered_template];
一个完整的测试模块,带有在git hub上创建的模板,您也可以检查它。

您需要定义细枝模板的路径

'path' => $path . '/templates',
'template' => 'twig-template-file-name',
$path
->参考您的模块目录

模板
->是包含模板的文件夹

template
->仅是不带扩展名的文件名,在我的例子中没有
.html.twig


总的来说,像这样定义主题挂钩,并在变量数组中设置变量

   function your_module_name_theme($existing, $type, $theme, $path) {
      return [
        'theme_tag' => [
          'variables' => [
            'var2' => NULL,
            'var2' => NULL,
          ],
          'path' => $path . '/templates',
          'template' => 'twig-template-file-name-without-extention',
        ],
      ];
    }
然后在引用模板的回调函数中使用此示例

public function basePageCallback() {
    return [
      '#theme' => 'theme_tag',
      '#var1' => 'test',
      '#var2' => 'test2',
    ];
然后在你的小树枝上找到它
{{var1}}

我不记得是否必须渲染模板。。。尝试直接返回
$template
directlySorry@STF,但仍不起作用。如果我在主题中使用这种方法,它可以很好地工作,但当我在自定义模块中尝试这样做时,它不起作用。我的小枝模板正在加载,我敢肯定。我使用了预定义变量
{{url('''}}
来确认twig是否正在加载。我在页面上看到了当前的URL打印。也许这个问题应该在:@felipsmartins,请找到解决方案并分享确切的链接,而不是整个网站的链接。@Nasser实际上,这个问题有点离题,因为有一个特定的频道可以问drupal+twig相关的问题。嗨,谢谢,但这对我来说不起作用。你能建议我其他的方法吗?我在一个真实的项目中使用了这个方法,对我来说效果很好,那么你有什么错误呢?你能澄清一下吗?没有错误,实际上,我只是在我的小树枝文件中打印
{{variable}}
,以确保我是否完全获得了值。所以值并没有打印在页面上,这意味着值并没有输入。我已通过您的邮箱地址(nak)向您发送了一封邮件。73406@gmail.com)你什么时候有时间请看这个。谢谢@Ankit缓存呢?您是否清除了缓存,正如您应该知道的那样,Drupal中的缓存非常棘手,需要多次清除才能看到正确的结果?非常感谢。它工作得非常好。这个演示对我很有用,对其他人也很有用。谢谢
public function basePageCallback() {
    return [
      '#theme' => 'theme_tag',
      '#var1' => 'test',
      '#var2' => 'test2',
    ];