Php 自定义模块Drupal 8的细枝模板中的Access变量
我想在Drupal8的Twig文件中使用一个变量。该细枝变量应该适用于站点的所有页面 假设我在表单或控制器中创建了一个变量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
$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',
];