如何在drupal 8中为menu-account.html.twig模板提供自定义变量

时间:2017-10-27 12:15:44

标签: twig drupal-8

我想为树枝模板提供登录的用户名。所以我需要将它作为变量传递给模板。 任何帮助将非常感激。

我尝试过使用hook_theme_registry_alter方法,但它不起作用。

2 个答案:

答案 0 :(得分:0)

使用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(){}

希望这符合您的要求 致谢

答案 1 :(得分:0)

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;
}