我正在使用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()]
)
);
}
那么我可以设置标题和内容吗? 谢谢
答案 0 :(得分:1)
请参见https://symfony.com/doc/current/forms.html#processing-forms
您应该从(经过验证的)$form
对象而不是$request
获取数据,因此,应该使用$request->request->get('title')
而不是$form->getData()['title']
。
假设您在表单中没有使用BlogPost
作为data_class
,并且您具有正确的验证设置。