在FOSUserBundle中查看其他用户的个人资料

时间:2018-04-30 09:27:25

标签: fosuserbundle symfony-3.4

首先,抱歉我的英语。

我有一个包含广告系统的网站。 感谢FOSUserBundle,访问他的个人资料非常简单。 但我想公开其他用户的个人资料。 让我解释一下,我希望我们点击用户的名字来查看他的个人资料。 当我转储用户时,我有两个不同的用户: app.user返回当前用户,ad.user返回编写广告的用户。 不幸的是,当我点击创建广告的用户时,它会自动发送给当前用户的个人资料:'(

我找了很多解决方案,但没有任何效果,ad.user继续返回当前用户,尽管网址指示了广告作者的ID。

我在symfony 3.请帮助我。

转储app.user =

User {#405 ▼

#id: 1

#ville: "Angers"

#description: "Test description dans profil Modifé TEST 2!!"

  -ads: PersistentCollection {#450 ▶}
  -comments: PersistentCollection {#475 ▶}

#username: "superadmin"

#usernameCanonical: "superadmin"

#email: "superadmin@gmail.com"

#emailCanonical: "superadmin@gmail.com"

#enabled: true

#salt: null

#password: "$2y$13$lSKxx9k4ctd5BNBDEoCEGeHU1jHi7S8jD7o8jS01S1TNX/KK8.zH."

#plainPassword: null

#lastLogin: DateTime @1525031449 {#400 ▶}

#confirmationToken: null

#passwordRequestedAt: null

#groups: null

#roles: array:1 [▶]

}

转储ad.user =

User {#740 ▼
+__isInitialized__: true

#id: 2

#ville: "Angers"

#description: null
  -ads: PersistentCollection {#1057 ▶}
  -comments: PersistentCollection {#1074 ▶}

#username: "usertest"

#usernameCanonical: "usertest"

#email: "usertest@gmail.com"

#emailCanonical: "usertest@gmail.com"

#enabled: true

#salt: null

#password: "$2y$13$3RhGWDCHt/uQn2EvLhuQ0es8dNOuwXhgiU/gtRKc3CzhQ7iWB.VUm"

#plainPassword: null

#lastLogin: DateTime @1525008711 {#1048 ▶}

#confirmationToken: null

#passwordRequestedAt: null

#groups: null

#roles: [] …2

}

是否有可能在某处强制访问当前用户的个人资料?

我的代码在树枝上:

<a href="{{ path('fos_user_profile_show', {'id': ad.user.id }) }}">Publiée par : {{ ad.user.username}} <span class="text-secondary">le {{ ad.date|date("d/m/Y") }}</span></a> 

谢谢

1 个答案:

答案 0 :(得分:0)

我发现!!!!!!

在ProfileController中

我添加一个新的showIdAction:

    /**
 * @Route("/profile/{id}", name="profile_id", requirements={"id"="\d+"})
 */
public function showIdAction($id)
{
    $user = $this->getDoctrine()
        ->getRepository('AppBundle:User')
        ->find($id);
    if (!is_object($user) || !$user instanceof UserInterface) {
        throw new AccessDeniedException('This user does not have access to this section.');
    }

    return $this->render('@FOSUser/Profile/show.html.twig', array(
        'user' => $user,
    ));
}

并且,在profile.xml(FOSUserBundle的路由)中,我添加了一个新路由:

    <route id="profile_id" path="/{id}" methods="GET">
    <default key="_controller">fos_user.profile.controller:showIdAction</default>
</route>

在树枝上:

<a href="{{ path('profile_id', {'id': ad.user.id }) }}

及其工作。

如果其他人寻求解决方案,我会留下这个问题