Symfony2可以检查路由是否对当前登录的用户有效,我需要构建一个动态菜单。 例如,我想检查用户(角色)是否可以访问这些路由,只是为了表明您可以访问路由。
$menu->addChild('Home', array ('route' => 'homepage'));
$menu->addChild('About Me', array (
'route' => 'page_show'
'routeParameters' => array ('id' => 42)
));
抱歉我的英文。
答案 0 :(得分:3)
看起来(从代码中)你正在使用KnpMenuBundle。
这意味着,如果是这种情况,那么您就是在服务中。
只需在您的MenuBuilder服务中注入security_context
服务,即可检查您的用户是否可以访问链接。
#MenuBuilder.php
if $securityContext->getToken()->getUser() && $securityContext->isGranted('ROLE_ADMIN') {
$menu->addChild('Administration', array("route" => ......);
}
然而,您需要使用注释来保护控制器中的路径:
/**
* Administration index page
*
* @Route("/administration/index", name="administration_index")
* @Template
* @Secure(roles="ROLE_ADMIN")
*
* @return array|Response
*/