【发布时间】:2016-12-01 09:43:29
【问题描述】:
我可以创建一个工作正常但在尝试将数据刷新到数据库时出错的表单:
控制器动作如下所示:
$purchase = new Purchase();
$form = $this->createFormBuilder($purchase)
->add('addresses', AddressType::class)
->add('quantity', IntegerType::class)
->add('toBeDeliveredAt', DateType::class)
->add('comment', TextareaType::class)
->add('save', SubmitType::class, array('label' => 'Submit'))
->getForm();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($purchase);
$em->flush();
}
类地址类型如下所示:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', TextType::class)
->add('firstname', TextType::class)
->add('lastname', TextType::class)
->add('street', TextType::class)
->add('city', TextType::class)
->add('zipcode', TextType::class)
->add('country', TextType::class)
->add('phone', TextType::class)
->add('email', EmailType::class);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'XxxBundle\Entity\Address'
));
}
但这给了我以下错误:
表单的视图数据应该是类的一个实例 XxxBundle\Entity\Address,但是是类的一个实例 教义\通用\集合\数组集合。你可以避免这个错误 通过将“data_class”选项设置为 null 或添加视图 转换类实例的转换器 Doctrine\Common\Collections\ArrayCollection 到一个实例 XxxBundle\Entity\Address.
如果我将 data_class 选项设置为 null,我会得到
警告:spl_object_hash() 期望参数 1 是对象,给定字符串
如何添加将 ArrayCollection 类实例转换为 Address 实例的视图转换器?
【问题讨论】:
-
一次购买可以有多个地址,对吗?如果是这样,请使用@DOZ 解决方案,但始终添加至少一个购买地址,以便显示地址表格。 $purchase->setAddress(新地址());
-
@Cerad 谢谢,这些信息也有帮助
标签: symfony doctrine-orm