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向表单提出请求时,它会将这些原始数据转换为规范化数据。ids 数组将转换为实体数组,然后传递给$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 回答