Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony 2-访问细枝模板中的分层角色_Php_Symfony_Roles_Twig - Fatal编程技术网

Php Symfony 2-访问细枝模板中的分层角色

Php Symfony 2-访问细枝模板中的分层角色,php,symfony,roles,twig,Php,Symfony,Roles,Twig,在我的模板中,我需要知道用户是否有特定的角色来根据它显示内容。到目前为止,我已经在我的用户类中实现了一个小函数: public function hasRole($role) { $roles = array(); foreach ($this->getRoles() as $rol) { $roles[] = $rol->getRole(); } return in_array($role, $roles); } 它告诉我该用户

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

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

它告诉我该用户是否具有作为参数传递的字符串指定的角色。这很有效,可以从细枝模板调用,但不允许我了解任何有关角色层次结构的信息。是否有方法从控制器访问角色层次结构?并且直接从一个小树枝模板?我查看了官方文档,没有找到任何相关信息。

您可以使用下面的代码检查twig templete中的角色,它解释了如果当前用户具有下面的角色,则显示一些内容

{% 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\u SUPERADMIN
在层次结构上大于
ROLE\u ADMIN
,该怎么办?
{%if'u-grated('ROLE\u-ADMIN')%}
评估
true
?Throoze@:如果用户使用ROLE\u-SUPERADMIN登录,他在层次结构上大于ROLE\u-ADMIN(希望您在secutiy.yml中指定的层次结构顺序),那么它将评估true,因为他是一个同时拥有超级管理员和超级管理员两个角色的用户,所以这就变得真实了。非常感谢您的回答!对不起打扰你了。。。在控制器中,哪一个等同于
is_grated()
?Throoze@:在控制器中,如果(TRUE==$this->get('security.context')->isgrated('role_SUPERADMIN')){//SUPERADMIN}或者(TRUE===$this->get('security.context')->isgrated('role_ADMIN')){//ADMIN},则可以按照下面的代码以角色方式检查用户