gpt4 book ai didi

php - 使用模块中的 hook_theme 将变量传递给 twig

转载 作者:可可西里 更新时间:2023-11-01 13:27:44 26 4
gpt4 key购买 nike

我完全知道如何在 Drupal 7 中执行此操作,因此我将解释我通常使用 Drupal 7 执行的操作。

在制作自定义模块时,我经常使用 hook_theme,它非常强大且可重用!

/**
* Implements hook_theme().
*/
function MODULE_theme() {
$themes = array();

$themes['name_of_theme'] = array(
'path' => drupal_get_path('module', 'module') .'/templates',
'template' => 'NAME_OF_TEPLATE',
'variables' => array(
'param1' => NULL,
'param2' => NULL,
),
);

return $themes;
}

然后我会使用

调用这个主题
theme('name_of_theme', array(
'param1' => 'VALUEA',
'param2' => 'VALUEB'
));

这将返回 html,我会很高兴。

所以 Drupal 8 已经过时了,需要好好把握它。

/**
* Implements hook_theme().
*/
function helloworld_theme() {
$theme = [];

$theme['helloworld'] = [
'variables' => [
'param_1' => [],
'param_2' => 'hello',
]
];

return $theme;
}

在我正在使用的 Controller 中

$hello_world_template = array(
'#theme' => 'helloworld',
'variables' => [
'param_1' => 'hello world',
'param_2' => 'hello from another world'
],
);

$output = drupal_render($hello_world_template,
array(
'variables' => array(
'param_1' => $param_1,
'param_2' => $param_2,
)
)
);

return [
'#type' => 'markup',
'#markup' => $output
];

我正在获取我的模板的输出,但是我不确定将我的参数传递到哪里以便它们在我的模板中可用(只是指出我的变量可用它们只是空值,如定义钩子(Hook)主题)

我也对我可能做的根本错误的想法持开放态度,如果我的方法不是最佳实践,我愿意采用替代方法。

最佳答案

发现问题,

改变这个,

$hello_world_template = array(
'#theme' => 'helloworld',
'variables' => [
'param_1' => 'hello world',
'param_2' => 'hello from another world'
],
);

为此,

$hello_world_template = array(
'#theme' => 'helloworld',
'#param_1' => $param_1,
'#param_2' => $param_2
);

我现在可以看到我正在传递的变量。

我仍然愿意接受更好的选择吗?

关于php - 使用模块中的 hook_theme 将变量传递给 twig,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109869/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com