我在控制器中创建了一个表单:
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;。问题是什么 ?
答案 0 :(得分:0)
从mapped = false
删除idcountry
个配置设置,因为这意味着该属性可以从$form->getData()
作为单独的数组元素使用,而不是您的用户实体的一部分。
$form->handleRequest($request);
if ($form->isValid()) {
//YOUR CODE
}
并且不使用bindRequest和方法检查。