php - Symfony2 验证可选字段

标签 php forms validation symfony symfony-2.0

在我的表单中,我有一个必填选项设置为 false 的字段,该字段是可选的。

但是,我想在使用该字段时对该字段进行 notBlank 验证:

@Assert\NotBlank(
 *     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);

但随后我得到一个错误,我无法在未绑定(bind)的表单上调用 isValid()。

我怎样才能实现我的目标? IE。仅在某些情况下验证字段。

最佳答案

这是个老问题了,不过现在好像可以这么搞了:

@Assert\Optional(
    @Assert\NotBlank(
        message="The name field can't be blank",
        groups={"flow_poemDataCollector_step1"}
    )
)

引用:http://symfony.com/doc/2.7/reference/constraints/Collection.html

关于php - Symfony2 验证可选字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13135686/

相关文章:

jsp - 如何在JSP中执行验证并以相同的形式显示错误消息?

php - Doctrine2+Symfony2 : How can I store entities and mappings in separate bundles?

php - 从 PHP mySQL 返回 Json 数组 - 错误

php - ajax如何从PHP文件返回错误消息

html - iOS Safari HTML 表单下一个/上一个按钮 - 它们如何工作?

javascript - 如何在表单提交时在 Google Analytics 上设置事件跟踪?

c# - 有没有办法检查一个字符串是否不等于多个不同的字符串?

asp.net - 使用javascript和服务器端禁用/启用requiredFieldValidators

php - UTF-8贯穿始终

javascript - rails 。 jQuery 表单提交字段模糊