2

オブジェクト「one」の属性を編集できるフォームがあります。このオブジェクトは、別のオブジェクト「多」と 1 対多の関係にあります。ユーザーがフォームから「多くの」オブジェクトを「1つ」に割り当てることを選択できるようにしたい。私はそれを行う方法を理解することはできません!

たった今:

\エンティティ\One.php

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

\Controller\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);
            }
        }
     }
 ...
}

これにより、"Expected argument of type "scalar", "Proxies\BundleEntityManyProxy" given というエラー メッセージが表示されます。

ご協力いただきありがとうございます!

4

1 に答える 1

7

解決しました!と書くべき->add('many', 'entity', array('class' => 'BundleMany'))でした。

http://forum.symfony-project.org/viewtopic.php?f=23&t=36604を参照してください。

于 2012-04-22T20:16:42.893 に答える