Symfony2:处理表格与关系学说数据

时间:2011-05-26 12:44:16

标签: forms symfony doctrine-orm

我正在S2中构建简单的CMS,我在处理文章形式的关系类别时遇到了一些麻烦。

CategoryType和action的代码:http://codepaste.net/ahyoig都在Symfony网站的教程/手册中。

表单看起来很好,但是当我处理数据时(也像在手动中)我得到错误:“在数组中使用类型数组的预期参数,字符串给出”,我现在不知道如何解决它。

2 个答案:

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