Symfony2在表单类型中存在多个属性的问题

时间:2015-08-25 16:01:43

标签: php forms symfony doctrine entity

我非常深入了解一个复杂的Symfony2项目,其中包含许多实体和表格中的连接表等。但我在表单构建器中遇到了“多个”属性的奇怪问题。

基本上我有一个表单,用户可以在其中添加疾病到CRM,并且每种疾病都可以附加到特定的商店(取决于使用的语言)。用户可以在此表单中选择一个商店列表,这些值存储在连接表中。但是我只想要选择一个商店(即选择下拉列表)而不是多个选择列表,但是对多个属性使用false值会抛出一个错误,我将在稍后概述。

首先,这是我的Type.php文件中的buildForm()代码:

        $builder->add('name' , 'text');
        $builder->add('description' , 'textarea');
        $builder->add('store', 'entity',
            array(
                'class' => 'AppBundle:Store',
                'empty_value' => 'Choose store',
                'property' => 'name',
                'multiple' => false,
            ));
        $builder->add('save', 'submit', array(
            'attr' => array(
                'class' => 'btn btn-primary'
            ),
        ));

我的实体中商店字段的条目:

/**
 * @var \Doctrine\Common\Collections\Collection
 *
 * @ORM\ManyToMany(targetEntity="AppBundle\Entity\Store", inversedBy="illness", cascade={"persist"})
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="store_id", referencedColumnName="id")
 * })
 */
public $store;

但是,如果我在表单类型中使用了多个属性的false声明,则在提交表单时,我收到以下错误:

  

警告:spl_object_hash()要求参数1为对象,给定字符串

因为它看起来像是传递了选择框的文本值,而不是相关的实体。当设置为多重选择框(即设置为true)时,它可以正常工作并保持原样。

我的控制器代码:

    $addIllness = new Illness();

    $form = $this->createForm(new IllnessType($em), $addIllness);
    $form->handleRequest($request);

    if ($form->isValid()) {
        $em->persist($addIllness);
        $em->flush();

        return $this->redirect($this->generateUrl('app_illness_table'));

    }

将它作为一个多选框并不是世界末日,虽然我宁愿把它作为下拉选择,所以用户不能选择多个商店 - 而不是我必须添加错误信息或请注意告诉他们。

如果有人想知道为什么会这样,或者之前遇到过请告诉我,我将非常感激!

谢谢 迈克尔

0 个答案:

没有答案