Посмотреть профиль других пользователей в FOSUserBundle - PullRequest
0 голосов
/ 30 апреля 2018

сначала извините за мой английский.

У меня есть сайт с рекламной системой. Благодаря FOSUserBundle доступ к его профилю очень прост. Но я хотел бы сделать профиль других пользователей общедоступным. Позвольте мне объяснить, я хотел бы, чтобы мы нажали на имя пользователя, чтобы увидеть его профиль. Когда я сбрасываю пользователей, у меня есть два разных пользователя: app.user, который возвращает текущего пользователя, и ad.user, который возвращает пользователя, написавшего объявление. К сожалению, когда я нажимаю на пользователя, который создал объявление, оно автоматически отправляет в профиль текущего пользователя: '(

Я искал много решений, но ничего не помогло, ad.user продолжает возвращать текущего пользователя, несмотря на URL-адрес, который указывает идентификатор автора объявления.

Я на 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 голосов
/ 30 апреля 2018

Я НАШЕЛ !!!!!!

в 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 }) }}

И его РАБОТА.

Я оставляю здесь вопрос, ищут ли другие решения

...