首先,抱歉我的英语。
我有一个包含广告系统的网站。 感谢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>
谢谢
答案 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 }) }}
及其工作。
如果其他人寻求解决方案,我会留下这个问题