2011-05-26 75 views
2

我在S2中构建简单的CMS,并且在处理文章形式的关系类别时遇到了一些麻烦。Symfony2:使用关系原则数据处理表格

CategoryType和操作的代码:http://codepaste.net/ahyoig都像在Symfony网站上的教程/手册。

窗体看起来不错,但当我处理数据(也像手册中)我得到错误:“预期的参数类型数组,字符串给出”在选择领域,我现在不知道如何解决它。

回答

2

我认为您的问题是因为您将选项multiple设置为false。这意味着表单类型将返回一个字符串值(因为您将multiple设置为false,即单个值),但您的关系可能设置为多对多关系。

multiple选项设置为true将向您的对象发送数组而不是字符串,这是应用程序所期望的。然后,如果您不喜欢HTML中的CategoryType的列表框外观,则可以使用Symfony2中的form theming以不同的方式呈现它。

希望这有助于 马特

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();