Symfony 4.3-传递给App \ Entity \ BlogPost :: setTitle()的参数1必须为字符串类型,给定null

时间:2019-09-29 16:25:41

标签: php symfony4

我正在使用Symfony 4.3开发简单的博客。然后,当我添加新帖子时,发现此错误:

Argument 1 passed to App\Entity\BlogPost::setTitle() must be of the type string, null given, called in C:\wamp64\www\symfony4\src\Controller\BlogPostController.php on line 99

我的功能在下面看到:


    public function add(Request $request, EntityManagerInterface $entityManager)
        {

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

            $form->handleRequest($request);

            if ($form->isSubmitted() && $form->isValid()) {

                $blogPost = new BlogPost();
                $blogPost->setTitle($request->request->get('title'));
                $blogPost->setContent($request->request->get('content'));
                $blogPost->setPublishedAt(new \DateTime());
                $blogPost->setUser($this->getUser());

                $entityManager->persist($blogPost);
                $entityManager->flush();

              return new RedirectResponse($this->router->generate('blog_post_index'));
            }

            return new Response(
                $this->twig->render(
                    'blog_post/add.html.twig',
                    ['blogPostForm' => $form->createView()]
                )
            );
        }

那么我可以设置标题和内容吗? 谢谢

1 个答案:

答案 0 :(得分:1)

请参见https://symfony.com/doc/current/forms.html#processing-forms

您应该从(经过验证的)$form对象而不是$request获取数据,因此,应该使用$request->request->get('title')而不是$form->getData()['title']

假设您在表单中没有使用BlogPost作为data_class,并且您具有正确的验证设置。