symfony2实体字段发送空POST请求


symfony2 entity field send a null POST Request

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

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发送为空,我得到这个错误"字段'idcountry'不能为空"。有什么问题吗?

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

顺便问一下,你用的是哪个版本的symfony ?因为在2.3以上,建议这样使用:

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