0

フォームにエンティティ フィールド タイプがありますが、コントローラから値を取得しようとするとエラーが発生します。

これは私のフォームビルダーです

$builder
        ->add('recursos', 'entity', array(
                'class' => 'SIGIConvocatoriasBundle:Recurso',
                'property' => 'nombre',
                'multiple' => true,
                'mapped' => false
                ))
        ->add('requisitos', 'entity', array(
                'class' => 'SIGIConvocatoriasBundle:Requisito',
                'property' => 'nombre',
                'multiple' => true,
                'mapped' => false
                ))
    ;

これが私のコントローラーです

$entity  = new Convocatoria();
$form = $this->createForm(new ConvocatoriaType(), $entity);
$form->bind($request);
$recursos = $request->request->get('recursos');
foreach ($recursos as $recurso)
{
    //Do something ...
}

しかし、ここでエラーが発生します

Invalid argument in foreach ...

$recursos変数が空か何かの場合のよう'recursos' => nullに、symfony で例外が発生します。ここで助けていただければ幸いです:D

4

2 に答える 2

1

リクエスト自体には生データ(スカラー)が含まれています。フォームにbindリクエストすると、この生データが正規化されたデータに変換されます。IDの配列はエンティティの配列に変換されてから、$entity->setRecursos(); // or each one to $entity->addRecurso();

$form = $this->createForm(new ConvocatoriaType(), $entity)
$form->bind($request);

$formData = $request->request->get($form->getName());
$formData['recursos']; // should be an array of ids

$entity->getRecursos(); // array of entities
于 2013-01-10T10:09:52.417 に答える
0

試す

             $entity  = new Convocatoria();
             $form = $this->createForm(new ConvocatoriaType(), $entity);
             $form->bind($request);

              foreach ($entity->getRecursos() as $recurse) {
                    //do something
                }

             $em = $this->getDoctrine()->getEntityManager();
                $em->persist($entity);
                $em->flush();
于 2013-01-09T05:05:36.297 に答える