Symfony2验证可选字段
在我的表单中,我有一个必填选项设置为false的字段,此字段是可选的。
但是,我希望在使用该字段时对此字段进行notBlank验证:
@AssertNotBlank(
* message="The name field can't be blank",
* groups={"flow_poemDataCollector_step1"}
* )
现在,我无法使用验证约束NotBlank,因为它会导致我的表单验证在该字段未使用时失败。
我试着在onPostBindRequest监听器的字段中添加一个随机值,但它很复杂,并没有设法使其工作。 我不确定这是不是正确的做法。
这是我试过的:($ form是一个Symfony Component Form FormInterface对象)
$form = $event->getForm();
$formData = $form->getData();
$formData->setUserName("foo");
$form = $form->setData($formData);
但后来我得到一个错误,我无法在未绑定的窗体上调用isValid()。
我怎样才能实现我的目标? 即。 仅在某些情况下验证该字段。
我可以看到实现这一目标的最佳方式是在您的实体上使用回调验证器。 由于此回调是在您的实体中定义的,因此它可以访问所有属性。 通过ExecutionContext,您可以根据需要设置违规。
这是一个古老的问题,但现在我们可以这样做:
@AssertOptional(
@AssertNotBlank(
message="The name field can't be blank",
groups={"flow_poemDataCollector_step1"}
)
)
ref:http://symfony.com/doc/2.7/reference/constraints/Collection.html
嗯。 我不得不多次重读你的问题,因为它里面的东西在逻辑上是不合理的。
如果你不想要该字段,那么使用NotBlank
约束是没有意义的。 如何不需要和同时需要一个字段?
如果所有你想要的是,如果在该字段中输入的内容不仅仅包含空格,那么你根本不需要NotBlank
约束,因为Symfony默认修剪用户输入,所以它最终会像没有任何东西一样根本没有进入。