Symfony 2表单级联验证

里贝罗

我在symfony 2中有一个表单,例如:

$form = $this->createFormBuilder();

        $form
            ->add('subscription', 'entity', array(
                'class' => 'AcmeDemoBundle:Subscription',

                'property'              => 'name',
                'label'                 => 'Subscription',
                'cascade_validation'    => false,
                'constraints'           => array(
                    new NotBlank(),
                )
            ))

验证失败,并显示以下错误:

subscription: ERROR: This value should be of type integer. ERROR: This value should be of type integer.

问题是我不想将验证层叠到订阅实体。我只希望能够从下拉列表中选择实体。

任何想法?

里奥·贝德罗斯

收到这些错误消息的原因是,您在子实体的一个或多个属性上的类型验证失败。无论您在何处定义这些约束,都应进行检查。就我而言,当我在允许为NULL的属性上分配“ Type()”约束时,就会触发此错误。删除类型约束消除了错误。

关于子对象的验证,仅当您根据我对文档的阅读情况,在父类中的属性上分配“有效”约束时,才应该发生这种情况。但是,它似乎也受到相关表单类型类cascade_validationsetDefaultOptions()方法中定义字段的控制AbstractType,您还可以在$options实例化表单对象时通过数组将其传递来覆盖它

$form = $this->createForm(
    $formType,
    $formModel,
    array('cascade_validation' => false)
);

在您的情况下,cascade_validation您定义设置仅适用于表单对象的Subscription子代的属性,我认为您正在尝试将验证设置应用于类本身(将Subscription对象作为一个类的类属性)。因此,将表单生成器实例更改为此:

$form = $this->createFormBuilder(null, array('cascade_validation' => false));

另外,您可以按照symfony2文档中的说明,在控制器内显式定义要验证的字段,如下所示:

use Symfony\Component\Validator\Constraints\Email;

public function addEmailAction($email)
{
    $emailConstraint = new Email();
    // all constraint "options" can be set this way
    $emailConstraint->message = 'Invalid email address';

    // use the validator to validate the value
    $errorList = $this->get('validator')->validateValue(
        $email,
        $emailConstraint
    );

    if (count($errorList) == 0) {
        // this IS a valid email address, do something
    } else {
        // this is *not* a valid email address
        $errorMessage = $errorList[0]->getMessage();

        // ... do something with the error
    }

    // ...
}

关于symfony2验证的参考文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Symfony 2表单级联验证

来自分类Dev

Symfony 2表单验证

来自分类Dev

使用Symfony2对实体进行级联验证

来自分类Dev

Symfony表单验证基本表单

来自分类Dev

使用Symfony2验证嵌入式表单

来自分类Dev

fosuserbundle的symfony2嵌入式表单验证

来自分类Dev

使用数组和实体验证Symfony 2表单

来自分类Dev

如何验证Symfony2中具有集合的表单?

来自分类Dev

Symfony2 Ajax表单验证在树枝中呈现错误

来自分类Dev

Symfony 2中的REST表单验证-如何测试帖子

来自分类Dev

在表单类型中使用Symfony2 UserPassword验证程序

来自分类Dev

Symfony2表单日期时间字段验证

来自分类Dev

表单提交/验证后,Symfony2设置Entity属性

来自分类Dev

没有createFormBuilder的Symfony2表单验证

来自分类Dev

Symfony2,YML文件,实体和表单中的验证

来自分类Dev

Symfony2 REST API,始终返回错误以验证表单

来自分类Dev

Symfony2-自定义表单呈现验证错误

来自分类Dev

Symfony2 Ajax表单验证在树枝中呈现错误

来自分类Dev

Symfony2表单验证耗尽了内存

来自分类Dev

Symfony2表单验证不在子渲染树枝中

来自分类Dev

Symfony2表单未验证必填字段

来自分类Dev

Symfony 2表单错误

来自分类Dev

Symfony 2验证消息

来自分类Dev

Symfony2表单+ REST API的AngularJS =表单验证额外字段错误

来自分类Dev

如何验证Symfony表单输入的MoneyType?

来自分类Dev

symfony IBAN表单字段验证

来自分类Dev

Symfony表单验证值在数组中

来自分类Dev

Symfony 2.3:验证不带表单的实体

来自分类Dev

Symfony 2.6表单验证和错误消息