表格类型:
class BranchFormType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('name');
}
public function getName() {
return 'branch';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'My\MainBundle\Entity\Branch',
));
}
}
在实体定义中:
<field name="name" column="name" type="string" length="255"/>
没有 nullable=true 并且该字段在呈现时具有必需的属性。
验证.yml:
My\MainBundle\Entity\Branch:
properties:
name:
- NotBlank: ~
symfony 会自动找到这个文件还是我必须包含在某个地方?该文档只是声明表单自动使用验证服务。
控制器:
$branch = new Branch();
$form = $this->createForm(new BranchFormType(), $branch);
if ($request->isMethod('POST')) {
$form->bindRequest($request);
if ($form->isValid()) {
$em->persist($branch);
$em->flush();
return $this->redirect($this->generateUrl('view_branch'));
}
}
return $this->render('MyMainBundle:Branch:create.html.twig', array(
'form' => $form->createView()
));
提交时出现以下错误:
SQLSTATE [23000]:违反完整性约束:1048 列“名称”不能为空
因此,尽管 name 为空并继续使用空值保留实体,isValid 仍返回 true。名称为空时,isValid如何返回true?ORM定义说nullable=false?`有什么想法吗?我没有定义额外的验证器。我用 sf2.1