我想给用户一个显示其他用户的可能性,这样他们就可以检查出其他用户的级别。
是否有办法给每个用户一个特定的路由?例如:/username/profile ?我应该为此创建一个新视图和一个新控制器吗?
提前感谢您的帮助!
创建路由和控制器,如/users
,列出所有用户。只允许特定角色访问/users
。创建另一个路由和控制器,如users/{id}
,并让控制器为您希望显示的用户提取必要的信息。这里的技巧是将其限制为超级管理员用户,例如
所以你的安全。Yml可能像这样:
role_hierarchy:
...
ROLE_SUPER_ADMIN: ROLE_SUPER_ADMIN
access_control:
...
- { path: ^/users, role: ROLE_SUPER_ADMIN }
在@Alex的帮助下,我是这样做的:
处理显示所有FOSUserBundle用户的所有列表+单独显示每个用户的用户控制器:
/**
* User controller.
*/
class UsersController extends Controller
{
/**
* Lists all CategoryShop entities.
*
*/
public function indexAction()
{
$em = $this->getDoctrine()->getManager();
$entities = $em->getRepository('DbeUserBundle:User')->findAll();
return $this->render('DbeUserBundle:Users:userlist.html.twig', array(
'entities' => $entities,
));
}
/**
* Finds and displays a CategoryShop entity.
*
*/
public function showAction($id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('DbeUserBundle:User')->find($id);
return $this->render('DbeUserBundle:Users:userprofile.html.twig', array(
'entity' => $entity,
));
}
下面是两个动作的路由:
<route id="fos_user_profile_show_users" pattern="/users">
<default key="_controller">FOSUserBundle:Users:index</default>
</route>
<route id="fos_user_profile_show_user" pattern="/user/{id}">
<default key="_controller">FOSUserBundle:Users:show</default>
</route>
我最终甚至允许未经身份验证的用户列出所有用户。因此不需要在防火墙中进行设置。