【发布时间】:2017-10-27 12:15:43
【问题描述】:
我想将登录的用户名提供给 twig 模板。所以我需要将它作为变量传递到模板中。 任何帮助将非常感激。
我曾尝试使用 hook_theme_registry_alter 方法,但它不起作用。
【问题讨论】:
我想将登录的用户名提供给 twig 模板。所以我需要将它作为变量传递到模板中。 任何帮助将非常感激。
我曾尝试使用 hook_theme_registry_alter 方法,但它不起作用。
【问题讨论】:
使用 HOOK 函数 hook_preprocess_page 如果您在主题中编写代码,则将此代码写入您的 .theme 文件 如果在模块中,则在 .module 文件中
function themename_preprocess_page(&$variables) {
global $user;// current user object
$variables['customUserName'] = $user->getUsername();
}
如果在模块中,请将主题名称更改为您的主题名称,然后替换为模块名称
在您的树枝模板中,您将像这样打印此变量
{{ customUserName }}
我们正在覆盖页面模板,因此您可以在所有页面模板中获取此变量 如果您在节点模板中需要此变量,则将函数重命名为
function themename_preprocess_node(){}
希望这能满足您的要求 谢谢
【讨论】:
Code.rider 的回答是正确的,但在 Drupal 8 中最好使用 \Drupal::currentUser() 来获取当前用户。这是我的 mytheme.theme 代码:
function mytheme_preprocess_page(&$variables) {
$user = \Drupal::currentUser();
if($user)
{
$username = \Drupal\user\Entity\User::load($user->id());
$variables['username'] = $username->getUsername();
}
return $variables;
}
【讨论】: