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.

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

任何的想法?

里奥·贝德罗斯(Leo Bedrosian)

之所以收到这些错误消息,是因为您在子实体的一个或多个属性上的类型验证失败。无论您在何处定义这些约束,都应进行检查。就我而言,当我在允许为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

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Symfony 2表单级联验证

来自分类Dev

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

来自分类Dev

fosuserbundle的symfony2嵌入式表单验证

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Symfony 2表单错误

来自分类Dev

Symfony2表单日期时间字段验证

来自分类Dev

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

来自分类Dev

symfony IBAN表单字段验证

来自分类Dev

使用Symfony2验证嵌入式表单

来自分类Dev

Symfony表单验证基本表单

来自分类Dev

Symfony表单验证值在数组中

来自分类Dev

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

来自分类Dev

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

来自分类Dev

没有createFormBuilder的Symfony2表单验证

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Symfony 2表单验证

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Symfony2表单验证耗尽了内存

来自分类Dev

Symfony 2验证消息

来自分类Dev

Symfony 2.6表单验证和错误消息

来自分类Dev

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

来自分类Dev

Symfony2表单未验证必填字段