Symfony 5 表单创建失败

我使用命令向我的项目( BookAuthor、BookSeries )添加了 2 个实体php bin/console make:entity,然后使用make:form命令生成了一个表单类。

在测试时,我添加了一些作者,但是当我尝试打开路线时,add/Series我收到此错误消息:

App\Entity\BookAuthor 类的对象无法转换为字符串

Form Builder 类的相关代码:

class BookSeriesType extends AbstractType

{

    public function buildForm(FormBuilderInterface $builder, array $options)

    {

        $builder

            ->add('title')

            ->add('description')

            ->add('SeriesAuthor', )

            ->add('Submit', SubmitType::class)

        ;

    }


    public function configureOptions(OptionsResolver $resolver)

    {

        $resolver->setDefaults([

            'data_class' => BookSeries::class,

        ]);

    }

}

SeriesAuthor应该从数据库中获取可用作者的列表。


BookSeries 与 BookAuthor 实体具有 OneToMany 关系。虽然 BookAuthor 表为空,但添加作者后页面加载正常,但页面开始出现错误


Controller.php 文件中的相关代码:


public function addBookSeries(Request $request)

    {

        $new_series = new BookSeries();

        $form = $this->createForm(BookSeriesType::class, $new_series);


        $form->handleRequest($request);

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


            $em = $this->getDoctrine()->getManager();

            $em->persist($new_series);

            $em->flush();


            return $this->redirect($this->generateUrl('post.manage'));

        }

        return $this->render("post/create.html.twig",[

            'form' => $form->createView()

        ]);


小唯快跑啊
浏览 125回答 2
2回答

白猪掌柜的

错误消息说明了您需要了解的所有信息。您正在尝试将对象转换为字符串。在本例中为 BookAuthor。我假设这些实体之间存在一对多或多对多的关系。在这种情况下,在 BookSeriesType 中,SeriesAuthor 应该是EntityType。

慕容森

显然我必须对表单生成器进行一些配置。public function buildForm(FormBuilderInterface $builder, array $options)    {        $builder            ->add('title')            ->add('seriesAuthor', EntityType::class, [                'class' => BookAuthor::class,                'choice_label' => function(BookAuthor $author) {                    return sprintf('%s %s', $author->getFirstname(), $author->getLastname());                },                'placeholder' => 'Choose an author'            ])            ->add('description')            ->add('Submit', SubmitType::class)        ;    }
打开App,查看更多内容
随时随地看视频慕课网APP