Symfony контроллер та же функция не работает - PullRequest
0 голосов
/ 03 мая 2018

У меня есть 2 контроллера, реклама и профиль. У меня на виду 2 навигационные карты - моя реклама и мой профиль.

В контроллере рекламы действие:

 /**
 * @Route("/my/adverts", name="my_advert_index")
 *
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function indexAction()
{
    $this->denyAccessUnlessGranted("ROLE_USER");

    $entityManager = $this->getDoctrine()->getManager();
    $adverts = $entityManager->getRepository(Advert::class)->findBy(["owner" => $this->getUser()]);

    return $this->render("MyAdvert/index.html.twig", ["adverts" => $adverts]);
}

в профиле контроллера:

/**
 * @Route("my/profile/details", name="my_profile_details")
 *
 * @param Request $request
 * @return Response
 */
public function detailsAction(Request $request)
{
    $this->denyAccessUnlessGranted("ROLE_USER");

    $entityManager = $this->getDoctrine()->getManager();
    $profile = $entityManager->getRepository(Profile::class)->findBy(["user" => $this->getUser()]);

    return $this->render("MyProfile/details.html.twig", [
        "profile" => $profile,
        "form" => $form->createView()
    ]);
}

Реклама в скрытом виде в порядке, но в режиме просмотра:

Ключ "name" для массива с ключами "0" не существует.

Что случилось? Это тот же код, но контроллер профиля не отправляет никаких данных.

1 Ответ

0 голосов
/ 03 мая 2018

Заменить

 $profile = $entityManager->getRepository(Profile::class)->findBy(["user" => $this->getUser()]);

С

$profile = $entityManager->getRepository(Profile::class)->findOneBy(["user" => $this->getUser()]);

Бьюсь об заклад, по вашему мнению, вы делаете что-то вроде profile.name, в то время как findBy() возвращает вам массив результатов, даже если у вас есть только один результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...