Symfony 4.3 - Аргумент 1, передаваемый в App \ Entity \ BlogPost :: setTitle (), должен иметь тип string, значение NULL - PullRequest
0 голосов
/ 29 сентября 2019

Я занимаюсь разработкой простого блога с помощью 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 Ответ

1 голос
/ 30 сентября 2019

См. https://symfony.com/doc/current/forms.html#processing-forms

Вы должны получить данные из (проверенного) объекта $form вместо $request, поэтому вместо $request->request->get('title') следует использовать $form->getData()['title'].

Предполагается, что вы не используете BlogPost в качестве data_class в своей форме и у вас есть правильная настройка проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...