Symfony 4 Метод соответствия, как трут - PullRequest
0 голосов
/ 06 января 2020

Я работаю над веб-сайтом для моего последнего школьного проекта, это веб-сайт, на котором (как обычный пользователь) вы можете сопоставить с тренером, и как только вы двое сошлись, вы можете поделиться страницей, где тренер может обновлять ваши ежедневные подпрограмма тренировки.

Я застрял в подходящем методе, моя сущность User имеет свойство idCoach, которое представляет собой массив, который может содержать другие Users. Идея в том, что когда вы находитесь на странице профиля тренера и нажимаете на кнопку матча, это добавляет тренера в вашу собственность idCoach. Это моя собственность от моего объекта User:

/**
 * @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="idSportif")
 */
private $idCoach;

Это то, что я попробовал на контроллере:

/**     
 * @Route("/user/match/{id}", name="match")
 */
public function matchCoach(ObjectManager $om, User $user) {
    $currentUser = $this->getUser();
    $currentUser->addIdCoach($user);
    $om->persist($currentUser);
    $om->flush();

    return $this->render('profile/index.html.twig', [
        'user' => $currentUser,
    ]); 

}

, но выдает сообщение об ошибке:

Вызов функции-члена addIdCoach () со значением NULL.

1 Ответ

1 голос
/ 06 января 2020

, поэтому getUser () возвращает ноль, поэтому вы получаете ошибку.

Расширяет ли ваш контроллер расширение AbstractController и, следовательно, getUser () возвращает текущего вошедшего в систему пользователя? В этом случае кажется, что вы не вошли в систему. Я бы проверил конфигурацию безопасности, чтобы убедиться, что только зарегистрированные пользователи могут получить доступ к этому URL.

Дополнительные комментарии:

  • Ваш наименование немного сбивает с толку, что такое "idCoach"? Если это свойство содержит связанные Coachs, я бы назвал его «Coach».
  • Ваш метод изменяет данные, поэтому его следует вызывать только через POST, а не GET.
...