【问题标题】:How to provide a custom variable to menu-account.html.twig template in drupal 8如何在 drupal 8 中为 menu-account.html.twig 模板提供自定义变量
【发布时间】:2017-10-27 12:15:43
【问题描述】:

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

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

【问题讨论】:

    标签: twig drupal-8


    【解决方案1】:

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

    希望这能满足您的要求 谢谢

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2016-12-31
        • 1970-01-01
        • 2018-11-23
        • 1970-01-01
        • 1970-01-01
        • 2017-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多