【发布时间】:2018-03-10 10:38:36
【问题描述】:
我是 Drupal 和 Twig 的新手,我只需要在我的自定义主题中使用一个 twig 表达式来输出当前用户的 ID。我在模板 cmets 中找不到任何东西,只有当用户登录 true/false 时。
有没有简单的方法来获取当前用户的ID?我不确定如何在主题中实现自定义方法。
谢谢!
【问题讨论】:
我是 Drupal 和 Twig 的新手,我只需要在我的自定义主题中使用一个 twig 表达式来输出当前用户的 ID。我在模板 cmets 中找不到任何东西,只有当用户登录 true/false 时。
有没有简单的方法来获取当前用户的ID?我不确定如何在主题中实现自定义方法。
谢谢!
【问题讨论】:
你好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>
【讨论】:
在您的主题中找到文件 yourthemename.theme 并添加以下代码:
function yourthemename_preprocess(&$vars, $hook)
{
$vars['uid'] = \Drupal::currentUser()->id();
}
现在,如果您为 html、页面、区域、块、字段、表单元素编辑您的 twig 模板...您可以在您的 twig 中使用“uid”标记。它适用于所有钩子
【讨论】:
uid 值(您可能不需要在任何地方使用它)。此外,您可能会遇到缓存问题。我不确定我是否会推荐这种方法,因为它会影响整个网站。
如果你只需要user.html.twig中的ID,那就是{{ user.id }}
【讨论】:
以下是 D8 现在的工作方式,包含两行可执行代码:
<?php
// This code returns the current user ID.
$account = \Drupal::currentUser();
return $account->id();
【讨论】:
显示名称不是您可以在 {{ content }} 中配置的字段。可以直接从用户实体获取:
{{ user.displayname }}
php 方法参考:AccountInterface::getDisplayName
【讨论】: