Как решить инстанцию ​​с помощью Doctrine? - PullRequest
0 голосов
/ 01 марта 2019

Я новичок в Symfony 4 и ищу помощь.У меня есть сущность с именем «Player», и я хочу сгенерировать случайный номер подтверждения.

На данный момент я использую переменную $ verifyNbr и сохраняю подтверждение в моей базе данных с помощью $ members-> setConfirmationNumber ($ verifyNbr); .

Что я хочу, это создать функцию generateRandomNumber () в моем Entity Player.php, например:

public function generateConfirmationNumber() : self 
{

    $this->confirmationNumber = substr(str_shuffle(str_repeat('ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',6)),0,5);

    return $this;
}

Это мой файл контроллера

   /**
     * @Route("/", name="homepage")
     */
    public function new(Player $player, EntityManagerInterface $em, Request $request)
    {
        $participant = $this->playerrepo->findAll();

        $form = $this->createForm(PlayerFormType::class);

        $randomNbr = $player->generateConfirmationNumber();



        $form->handleRequest($request);
        if($form->isSubmitted() && $form->isValid()) {
            $data = $form->getData();
            $participant = new Player;
            $participant->setName($data['name']);
            $participant->setFirstname($data['firstname']);
            $participant->setEmail($data['email']);
            $participant->setConfirmationNumber($confirmNbr);
            $participant->setRegisterAt(new \DateTime);

            $em->persist($player);
            $em->flush();

            $this->addFlash('success', 'Player added!');

            return $this->redirectToRoute('homepage');
        }

        return $this->render('app/subscribe.html.twig', [
            'playerForm' => $form->createView(),
            'player'=>$player,
        ]);
    }

И это мое сообщение об ошибке:

Невозможно угадать, как получить экземпляр Doctrine из информации запроса для параметра "player".

Можете ли выпомогите пожалуйста?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

Я нашел решение.Я изменил свою функцию set и удалил добавленную мной функцию.Все работает!

0 голосов
/ 01 марта 2019

Ваш метод ожидает экземпляр объекта Player - откуда он должен появиться?Доктрина пытается угадать это и получить его из URL, но не может.Ваш метод для создания новых игроков - зачем вам нужен экземпляр игрока?Просто удалите этот параметр из сигнатуры метода, т.е. измените его на:

public function new(EntityManagerInterface $em, Request $request)

...