Symfony的2:验证形式定义的字段仅(Symfony 2 : Validate form for

2019-10-31 04:03发布

是否有可能验证只存在的形式领域..

例如,我有一个declarationForm,我给规则在validation.yml 3个字段:姓名,参考,commantary ..有时我不加入我的建设者评论领域。 反正当我验证表单它说,评论不能为空(但没有现场解说)

Answer 1:

是的,但你将不得不删除NotBlank从条件validation.ymlcommentary字段并添加要求回当你包括在你的建设者FormBuilderInterface

$builder
    // ... other fields using add()
    ->add('commentary', 'text', array(
        'required' => true,
    ))
;

但是请注意,这确实只是添加HTML5 required属性都将inputlabel标签。

较好的解决得益于@Cerad是验证组添加到您的validation.yml的领域:

AcmeBundle\Entity\Declaration: # change to your entity class
    properties:
        # ...
        commentary:
            - NotBlank: { groups: [commentaryReq] }

然后使用表单生成与该验证组,在需要的时候:

$form = $this->createFormBuilder($declaration, array(
    'validation_groups' => array('commentaryReq'),
))
    //->add(...)
;

或者,如果你使用表单类:

use Symfony\Component\OptionsResolver\OptionsResolverInterface;

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'validation_groups' => array('commentaryReq'),
    ));
}

您还可以指定根据提交的数据组或指定基于该被点击的按钮组是否有帮助。



Answer 2:

如果你想允许空commentary字段,添加nullable=true在你的实体的列定义:

http://doctrine-orm.readthedocs.org/en/latest/reference/annotations-reference.html#column

http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/basic-mapping.html#property-mapping



文章来源: Symfony 2 : Validate form for defined fields only
标签: forms symfony