symfony2实体字段发送空POST请求

时间:2014-06-16 23:26:57

标签: php symfony

我在控制器中创建了一个表单:

public function uploadAction(Request $request)
    {

        $user= new User();
        $form = $this->createFormBuilder($user)
            ->setAction($this->generateUrl('app_create_user'))
            ->add('name','text',array('label'=>'Your Name','required' => false))
            ->add('idcountry', 'entity', array(
                'mapped'   => false, 
                'class'    => 'GedBundle:Country',
                'property' => 'country_name',
                'label'     => 'Your Country',
            ))

            ->add('file')
            ->getForm()
        ;

        if ($request->isMethod('POST')) {
            $form->bind($request);
            if ($form->isValid()) {
                $em = $this->getDoctrine()->getManager();
                $em->persist($user);
                $em->flush();

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

            }
        }

        return $this->render('GedBundle:Default:form.html.twig',array(
            'form' => $form->createView(),
        ));

    }

以下是我的观点:

<form action=" {{ path('app_create_user') }} " method="post" {{ form_enctype(form) }}>
 {{ form_widget(form) }}
 <input type="submit" value="Create" />
</form>

一切运行良好,但唯一的问题是当我提交表单时,idcountry的值发送为null,我收到此错误&#34;该字段&#39; idcountry&#39;不能是空的&#34;。问题是什么 ?

1 个答案:

答案 0 :(得分:0)

mapped = false删除idcountry个配置设置,因为这意味着该属性可以从$form->getData()作为单独的数组元素使用,而不是您的用户实体的一部分。

BTW,您使用的是哪个版本的symfony?原因超过2.3,建议使用如下:

$form->handleRequest($request);
if ($form->isValid()) {
    //YOUR CODE
}

并且不使用bindRequest和方法检查。