根据用户角色,在模板中生成动态菜单(菜单将出现在所有其他应用程序的页面中)的最佳做法是什么? 我在我的主模板中使用它:
{{render(controller('AcmeMainBundle:Sidebar:show'))}}
这是控制器
class SidebarController extends Controller {
public function showAction() {
$userRole = $this->getUser()->getRoles();
if (in_array("ROLE_ADMIN", $userRole)) {
return $this->render('AcmeMainBundle:Sidebar:sidebarAdmin.html.twig');
} else {
return $this->render('AcmeMainBundle:Sidebar:sidebarUser.html.twig');
}
}
}
但我认为这不好;你怎么看?谢谢!
答案 0 :(得分:3)
您也可以在视图级别实现此目的。在模板中,根据角色
检查活动用户的角色并隐藏/显示菜单{% if is_granted('ROLE_ADMIN') and not is_granted('ROLE_USER') %}
//Show admin stuff
{% else if is_granted('ROLE_USER') %}
//Show user stuff
{% endif %}
答案 1 :(得分:0)
如果你真的想为两者使用相同的模板而模板中没有逻辑,你可以将参数传递给render方法,以提供菜单中将出现的元素。