【问题标题】:Drupal 8 Twig User ID?Drupal 8 Twig 用户 ID?
【发布时间】:2018-03-10 10:38:36
【问题描述】:

我是 Drupal 和 Twig 的新手,我只需要在我的自定义主题中使用一个 twig 表达式来输出当前用户的 ID。我在模板 cmets 中找不到任何东西,只有当用户登录 true/false 时。

有没有简单的方法来获取当前用户的ID?我不确定如何在主题中实现自定义方法。

谢谢!

【问题讨论】:

    标签: twig drupal-8


    【解决方案1】:

    你好bobomoreno

    我建议你使用模块Bamboo Twig
    Bamboo Twig 模块提供了一些带有一些有用功能和过滤器的 Twig 扩展,旨在改善开发体验。

    然后您可以启用子模块Bamboo Twig - Loaders

    drush en bamboo_twig_loader -y
    

    终于可以使用Twig函数bamboo_load_currentuser

    <!-- Get Current User -->
    {% set user = bamboo_load_currentuser() %}
    <div>{{ user.name.value }}</div>
    <div>{{ user.uid.value }}</div>
    

    您可以找到complete official documentation there

    【讨论】:

      【解决方案2】:

      在您的主题中找到文件 yourthemename.theme 并添加以下代码:

      function yourthemename_preprocess(&$vars, $hook)
      {
        $vars['uid'] = \Drupal::currentUser()->id();
      }
      

      现在,如果您为 html、页面、区域、块、字段、表单元素编辑您的 twig 模板...您可以在您的 twig 中使用“uid”标记。它适用于所有钩子

      【讨论】:

      • 这非常“危险”和“耗时/性能”,因为您将为每个模板文件的 Twig 文件设置 uid 值(您可能不需要在任何地方使用它)。此外,您可能会遇到缓存问题。我不确定我是否会推荐这种方法,因为它会影响整个网站。
      • 凯文为什么这么危险?为什么耗时?为什么我有缓存问题?它是将变量传递给函数。而已。每个使用 drupal 的人都知道如何使用预处理钩子以及如何使用它来预处理特定元素。
      • 钩子的耗时对于性能来说不是很好(尤其是每个模板上都会出现的theme_preprocess)。很危险,因为您将在每个模板中都有一个简短且非常常用的 uid 变量。缓存问题取决于您的缓存标签/上下文和策略,用户不会重新解释预处理(因此 uid 值将是不正确的)。如果您愿意,我很乐意在 Drupal Slack 中讨论所有这些 (@wengerk)。
      【解决方案3】:

      如果你只需要user.html.twig中的ID,那就是{{ user.id }}

      【讨论】:

        【解决方案4】:

        以下是 D8 现在的工作方式,包含两行可执行代码:

        <?php
        // This code returns the current user ID.
        $account = \Drupal::currentUser();
        return $account->id(); 
        

        【讨论】:

          【解决方案5】:

          显示名称不是您可以在 {{ content }} 中配置的字段。可以直接从用户实体获取:

          {{ user.displayname }}
          

          php 方法参考:AccountInterface::getDisplayName

          【讨论】:

            猜你喜欢
            • 2016-07-05
            • 2014-09-13
            • 2018-11-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多