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