【问题标题】:Symfony2: Processing form with relational doctrine dataSymfony2:使用关系学说数据处理表单
【发布时间】:2011-09-02 13:53:19
【问题描述】:
我正在 S2 中构建简单的 CMS,并且在处理文章形式的关系类别方面没有什么问题。
CategoryType 和操作的代码:http://codepaste.net/ahyoig 都与 Symfony 网站上的教程/手册中的一样。
表单看起来不错,但是当我处理数据时(也像在手册中一样),我收到错误:“选择字段中的类型为数组的预期参数,给定的字符串”,我现在不知道如何解决它。
【问题讨论】:
标签:
forms
symfony
doctrine-orm
【解决方案1】:
我认为您的问题是因为您将选项multiple 设置为false。这意味着表单类型将返回一个字符串值(因为您将multiple 设置为false,这是一个单一值),但您的关系可能设置为多对多关系。
将multiple 选项设置为true 将向您的对象发送一个数组而不是字符串,这是应用程序所期望的。然后,如果您不喜欢 HTML 中 CategoryType 的列表框外观,您可以在 Symfony2 中使用 form theming 以不同方式呈现它。
希望这会有所帮助,
马特
【解决方案2】:
您不需要 CategoryType。 $categories 数组的创建也是没用的。
最好的选择是使用原生实体表单类型:
<?php
use Doctrine\ORM\EntityRepository;
//...
$article = new Article();
$form = $this->get('form.factory')
->createBuilder('form',$article)
->add('category', 'entity', array
(
'class' => 'CMSBackBundle:Category',
'query_builder' => function(EntityRepository $er)
{
return $er->createQueryBuilder('c')
->orderBy('c.title', 'ASC');
},
'expanded' => false,
'multiple' => false
)
// ...
->getForm();