如何用Doctrine解决实例问题?

时间:2019-02-28 21:34:19

标签: php symfony doctrine

我是Symfony 4的新手,正在寻求帮助。我有一个名为“ Player”的实体,我想生成一个随机的确认号。

现在,我使用变量 $ confirmNbr ,并使用 $ participant-> setConfirmationNumber($ confirmNbr); 将$ confirm保存在数据库中。 / p>

我想要的是像这样在Entity Player.php中创建一个函数 generateRandomNumber()

public function generateConfirmationNumber() : self 
{

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

    return $this;
}

这是我的Controller文件

   /**
     * @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实例   参数“玩家”的信息。

能帮我吗?

2 个答案:

答案 0 :(得分:0)

您的方法期望Player对象的实例-它应该来自哪里?教义正在尝试猜测并从URL中获取它,但事实并非如此。您的方法是创建新的播放器-为什么需要播放器实例?只需从方法签名中删除该参数,即可将其更改为:

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

答案 1 :(得分:0)

我找到了解决方案。我已经修改了set函数,并删除了添加的函数。一切正常!