fko*_*ler 2 php forms validation symfony symfony-2.0
在我的表单中,我有一个必填项设置为false的字段,此字段是可选的.
但是,当使用该字段时,我希望在此字段上进行notBlank验证:
@Assert\NotBlank(
* message="The name field can't be blank",
* groups={"flow_poemDataCollector_step1"}
* )
Run Code Online (Sandbox Code Playgroud)
现在,我无法使用验证约束NotBlank,因为当字段未使用时,它将导致我的表单验证失败.
我尝试在onPostBindRequest监听器中的字段中添加随机值,但它很复杂,并且无法使其工作.我不确定这是不是正确的方法.
这是我试过的:( $ form是一个Symfony\Component\Form\FormInterface对象)
$form = $event->getForm();
$formData = $form->getData();
$formData->setUserName("foo");
$form = $form->setData($formData);
Run Code Online (Sandbox Code Playgroud)
但后来我得到一个错误,我不能在未绑定的表单上调用isValid().
我怎样才能实现目标?即.仅在某些情况下验证字段.
小智 7
我能看到实现这一目标的最佳方法是在您的实体上使用Callback验证器.由于此回调是在您的实体中定义的,因此它可以访问所有属性.通过ExecutionContext,您可以根据需要设置违规.
这是一个老问题,但似乎现在我们可以这样做:
@Assert\Optional(
@Assert\NotBlank(
message="The name field can't be blank",
groups={"flow_poemDataCollector_step1"}
)
)
Run Code Online (Sandbox Code Playgroud)
参考:http://symfony.com/doc/2.7/reference/constraints/Collection.html