我使用的是Symfony 2.7.6。我创建了一个名为employee的实体,它的交互式表单是使用doctrine crud生成器生成的。实体具有以下字段
1. id
2. firstname
3. lastname
4. email
5. username
6. password
验证正在按预期从所有字段的用户注册表单开始。
问题:我创建了一个登录表单,我想取消对字段firstname,lastname和email的验证,并将这些元素排除在我的页面上呈现
我已经修改了我的控制器来渲染我的表单
$entity = $em->getRepository('XXXEmployeeBundle:Employee');
$form = $this->createForm(new \XXX\EmployeeBundle\Form\EmployeeType(), $entity, array(
'action' => $this->generateUrl('user_login'),
'method' => 'POST',
));
$form->add('submit', 'submit', array('label' => 'Update'));
$form->remove('firstname');
$form->remove('lastname');
$form->remove('email');
$form->handleRequest($request);
当from从表单中排除字段时,这可以正常工作。但我的$ form-> isvalid()返回false。由于我使用$ form-> getErrorsAsString()方法打印错误,其显示如下:
firstname:ERROR:名字不能为空。姓氏:错误:姓氏代码不能为空。 employeeFirstName:错误:员工名字不能为空。电子邮件:错误:电子邮件不能为空。
这是实现此功能的正确方法吗?请帮我解决这个问题。感谢
答案 0 :(得分:0)
在您的实体中,您可以像这样使用nullable = true
/**
* @ORM\Column(type="string", nullable=true)
*
* @var string
*/
protected $nombre;
告诉可以为空的教条,后端/前端都不检查该值。
问候!
答案 1 :(得分:0)
我认为逻辑问题。
因此。您应该为登录创建特殊表单类(而不是从注册),并且不要设置数据启发(createForm函数中的第二个参数)
并且,请检查控制器操作中是否有相同的表单对象来处理此表单。