如何从Symfony 2编辑对象表单中的对象列表中选择

时间:2012-04-21 20:31:17

标签: symfony symfony-forms

我有一个表单,您可以在其中编辑对象" one"的属性。此对象与另一个对象具有一对多的关系,"很多"。我希望用户能够选择分配一个"很多"反对"一个"从形式。我无法弄清楚如何做到这一点!

现在:

\实体\ One.php

class One
{
 ...
  /*
   * @ORM\ManyToOne(targetEntity="many", inversedBy="one")
   * @ORM\JoinColumn(name="manyId", referencedColumnName="id")
   */
  protected $manyId;
 ...
}

\控制器\ OneController.php

class OneController extends Controller
{
  ... 
    public function editAction($oneId, Request $request)
    {
        if ($oneId) {
            $one = $this->getDoctrine()
                ->getRepository('One')
                ->find($oneId);
        } else {
            $one = new One();
        }

        $em = $this->getDoctrine()->getEntityManager();
        $manyEntity = 'Bundle\Entity\Many';
        $manyList = new EntityChoiceList($em, $manyEntity);

        $form = $this->createFormBuilder($one)
            ->add('many', 'choice', array('choice_list' => $manyList))
            ->getForm();

        if ($request->getMethod() == 'POST') {
            $form->bindRequest($request);

            if ($form->isValid()) {
                $entityManager = $this->getDoctrine()->getEntityManager();
                $entityManager->persist($one);
            }
        }
     }
 ...
}

这会导致错误消息"#34;标量"," Proxies \ BundleEntityManyProxy"类型的预期参数;给定"

感谢您的帮助!

1 个答案:

答案 0 :(得分:7)

解决!我应该写->add('many', 'entity', array('class' => 'BundleMany'))

请参阅http://forum.symfony-project.org/viewtopic.php?f=23&t=36604