我正在S2中构建简单的CMS,我在处理文章形式的关系类别时遇到了一些麻烦。
CategoryType和action的代码:http://codepaste.net/ahyoig都在Symfony网站的教程/手册中。
表单看起来很好,但是当我处理数据时(也像在手动中)我得到错误:“在数组中使用类型数组的预期参数,字符串给出”,我现在不知道如何解决它。
答案 0 :(得分:2)
我认为您的问题是因为您将选项multiple
设置为false
。这意味着表单类型将返回一个字符串值(因为您将multiple
设置为false
,单个值)但您的关系可能设置为多对多关系。
将multiple
选项设置为true
会向对象发送数组而不是字符串,这是应用程序所期望的。然后,如果您不喜欢HTML中的CategoryType的列表框外观,则可以使用Symfony2中的form theming以不同方式呈现它。
希望这有帮助, 马特
答案 1 :(得分:1)
您不需要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();