gpt4 book ai didi

forms - Symfony 2 : The option "validation_constraint" does not exist

转载 作者:行者123 更新时间:2023-12-04 16:35:42 29 4
gpt4 key购买 nike

我有一个非常简单的表格,没有课。我制作了一些带有约束选项的项目,但表单验证不起作用。
我读过好几个地方 ( e.g here )
我可以添加一个 validation_constraint参数是 \Symfony\Component\Validator\Constraints\Collection实例。

当我尝试时,我总是收到一条错误消息:

The option "validation_constraint" does not exist. Known options are: ... blabla



我的表格:
$collectionConstraint = new \Symfony\Component\Validator\Constraints\Collection(
array(
'customer' => new \Symfony\Component\Validator\Constraints\NotBlank(),
'customer_address' => new \Symfony\Component\Validator\Constraints\NotBlank(),
'customer_address_postal' => new \Symfony\Component\Validator\Constraints\NotBlank(),
'paymentDeadline' => new \Symfony\Component\Validator\Constraints\Date(),
'fulfillmentDate' => new \Symfony\Component\Validator\Constraints\Date(),

'currency' => new \Symfony\Component\Validator\Constraints\Choice(array(
'choices' => $currency_entities
)),

'paymode' => new \Symfony\Component\Validator\Constraints\Choice(array(
'choices' => $paymode_entities
))
)
);

$form = $this->createFormBuilder(null,array(
'validation_constraint' => $collectionConstraint
))
->add('customer','choice',array(
'choice_list'=> $customer_choices,
'multiple' => false,
'required' => true,
'empty_value' => '',
'attr' => array(
'class' => 'chosen large',
)
))
->add('customer_address','choice',array(
'multiple' => false,
'required' => true,
'empty_value' => '',
'attr' => array(
'class' => 'chosen large'
)
))
->add('customer_address_postal','choice',array(
'multiple' => false,
'required' => true,
'empty_value' => '',
'attr' => array(
'class' => 'chosen large'
)
))
->add('paymentDeadline','date',array(
'input' => 'datetime',
'widget' => 'single_text',
'required' => true,
'attr' => array(
'class' => 'date-picker m-ctrl-medium',
'addon' => 'icon-calendar',
)
))
->add('fulfillmentDate','date',array(
'input' => 'datetime',
'widget' => 'single_text',
'required' => true,
'attr' => array(
'class' => 'date-picker m-ctrl-medium',
'addon' => 'icon-calendar',
)
))
->add('currency','choice',array(
'required' => true,
'choice_list' => $curreny_choices
))
->add('paymode','choice',array(
'required' => true,
'choice_list' => $paymode_choices

))
->add('subject','text',array(
'required' => false,
'attr' => array(
'class' => 'span8'
)
))
->add('comment','textarea',array(
'required' => false,
'attr' => array(
'class' => 'span8',
'rows' => 5
)
))
;

Symfony 版本是 2.3.3。

可能是什么问题呢?

最佳答案

必须使用 constraints 将验证应用于每个字段选项,而不是表单生成器。
所以你的代码应该如下:

use \Symfony\Component\Validator\Constraints\NotBlank;
use \Symfony\Component\Validator\Constraints\Date;
use \Symfony\Component\Validator\Constraints\Choice;

$form = $this->createFormBuilder(null)
->add('customer','choice',array(
'choice_list'=> $customer_choices,
'multiple' => false,
'required' => true,
'empty_value' => '',
'attr' => array(
'class' => 'chosen large',
),
'constraints' => new NotBlank()
))
->add('customer_address','choice',array(
'multiple' => false,
'required' => true,
'empty_value' => '',
'attr' => array(
'class' => 'chosen large'
),
'constraints' => new NotBlank()
))
->add('customer_address_postal','choice',array(
'multiple' => false,
'required' => true,
'empty_value' => '',
'attr' => array(
'class' => 'chosen large'
),
'constraints' => new NotBlank()
))
->add('paymentDeadline','date',array(
'input' => 'datetime',
'widget' => 'single_text',
'required' => true,
'attr' => array(
'class' => 'date-picker m-ctrl-medium',
'addon' => 'icon-calendar',
),
'constraints' => new Date()
))
->add('fulfillmentDate','date',array(
'input' => 'datetime',
'widget' => 'single_text',
'required' => true,
'attr' => array(
'class' => 'date-picker m-ctrl-medium',
'addon' => 'icon-calendar',
),
'constraints' => new Date()
))
->add('currency','choice',array(
'required' => true,
'choice_list' => $curreny_choices,
'constraints' => new Choice(array(
'choices' => $currency_entities
)),
))
->add('paymode','choice',array(
'required' => true,
'choice_list' => $paymode_choices,
'constraints' => new Choice(array(
'choices' => $paymode_entities
))

))
->add('subject','text',array(
'required' => false,
'attr' => array(
'class' => 'span8'
)
))
->add('comment','textarea',array(
'required' => false,
'attr' => array(
'class' => 'span8',
'rows' => 5
)
))
;

注意:我添加了一些 use顶部的语句以保持代码清晰。

http://symfony.com/doc/current/book/forms.html#adding-validation

关于forms - Symfony 2 : The option "validation_constraint" does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18147834/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com