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},则可以按照下面的代码以角色方式检查用户