【问题标题】:Symfony 2 - Accessing Hierarchical Roles in a twig templateSymfony 2 - 在树枝模板中访问分层角色
【发布时间】:2012-05-02 14:55:38
【问题描述】:

在我的模板中,我需要知道用户是否具有特定的角色来根据它显示内容。到目前为止,我已经在我的用户类中实现了一个小功能:

  public function hasRole($role) {
    $roles = array();
    foreach ($this->getRoles() as $rol) {
      $roles[] = $rol->getRole();
    }
    return in_array($role, $roles);
  }

告诉我这个用户是否具有作为参数传递的字符串指定的角色。这项工作可以从树枝模板中调用,但不允许我了解有关角色层次结构的任何信息。有没有办法从控制器访问角色层次结构?并直接来自树枝模板?我浏览了官方文档并没有找到任何相关信息。

【问题讨论】:

  • 查看this的答案。

标签: php symfony roles twig


【解决方案1】:

你可以使用下面的代码检查twig模板中的角色,它说明如果当前用户具有以下角色,则显示一些东西

{% if is_granted('ROLE_ADMIN') %}

  //show things related to admin role

{%else if is_granted('ROLE_USER')%}
//show things related to user role
{% endif %}

希望这对您有所帮助。 快乐编码!

【讨论】:

  • 感谢您的回答!一个问题:如果我的用户的ROLE_SUPERADMIN 在层次上大于ROLE_ADMIN 怎么办? {% if is_granted('ROLE_ADMIN') %} 会评估 true 吗?
  • Throoze@: 如果一个用户使用 ROLE_SUPERADMIN 登录,他在层次上大于 ROLE_ADMIN(希望你在 secutiy.yml 中指定的层次顺序),那么它将评估为真,因为在层次上他是一个用户ROLE_SUPERADMIN 和 ROLE_ADMIN 都变为 True
  • 非常感谢您的回答!
  • 抱歉打扰您了...相当于控制器中的is_granted()
  • Throoze@: 在控制器中,您可以按照以下代码检查角色中的用户 if(TRUE === $this->get('security.context')->isGranted('ROLE_SUPERADMIN') ){//superADMIN} else if(TRUE === $this->get('security.context')->isGranted('ROLE_ADMIN')){//ADMIN}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多