为了账号安全,请及时绑定邮箱和手机立即绑定

Symfony 5 表单创建失败

Symfony 5 表单创建失败

PHP
小唯快跑啊 2023-07-01 17:17:00
我使用命令向我的项目( 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()        ]);
查看完整描述

2 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

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

查看完整回答
反对 回复 2023-07-01
?
慕容森

TA贡献1853条经验 获得超18个赞

显然我必须对表单生成器进行一些配置。

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)

        ;

    }


查看完整回答
反对 回复 2023-07-01
  • 2 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信