如何使用Symfony2中的FOUserbundle向另一个用户显示用户配置文件?


How can I display a users profile to another user with the FOUserbundle in Symfony2?

我想给用户一个显示其他用户的可能性,这样他们就可以检查出其他用户的级别。

是否有办法给每个用户一个特定的路由?例如:/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>

我最终甚至允许未经身份验证的用户列出所有用户。因此不需要在防火墙中进行设置。