【问题标题】:Symfony2 Form validation with Assert statementSymfony2 带有 Assert 语句的表单验证
【发布时间】:2015-07-16 11:40:13
【问题描述】:

我无法在 Symfony2 中使用 Entity 属性的 Assert 语句验证我的表单。

这是我的实体:

use Symfony\Component\Validator\Constraints as Assert;

    class AqquiringRequestData
    {
        /**
         * @Assert\IsTrue(message="Необходимо принять условия")
         * @Assert\NotNull(message="Необходимо принять условия")
         */
        public $checkacc;

这是我的表单生成器:

public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add('checkacc', 'checkbox', array(
                'label' => 'I agree',
                'required'  => false,               
                'validation_groups' => array('Default'),
        ));
    }

这是控制器动作:

            $formData = new AqquiringRequestData();

            $flow = $this->get('cib.form.flow.aqquiringreq');
            $flow->bind($formData);
            $form = $flow->createForm();

            if ($flow->isValid($form)) {
                   ...

当我尝试提交带有未选中复选框的表单时,它已成功提交。我做错了什么?

谢谢!

【问题讨论】:

  • 你的 bundle 是否使用了 yml 配置?
  • 是的,我在我的包中使用 yml 配置文件
  • 我认为现在根据该评论回答了您的问题

标签: symfony


【解决方案1】:

选项 1:启用注释以进行验证

Validation > Configuration

默认情况下不启用用于验证的注释阅读器。您可以在上面的链接中阅读如何更改它。

选项 2:使用 yaml 验证规则

你的 bundle 使用的是yml 配置格式,因此我建议你也用yml 格式写下你的验证规则。

这看起来像这样:

# src/AppBundle/Resources/config/validation.yml
AppBundle\Entity\AqquiringRequestData:
    properties:
        checkacc:
            - NotNull: ~

阅读此内容:http://symfony.com/doc/current/book/validation.html注意:示例具有用于不同配置格式的多个选项卡

【讨论】:

  • 谢谢马塞尔!您的回答很有帮助,解决了我的问题!
  • 感谢您的反馈,很高兴能为您提供帮助。
【解决方案2】:

您不应该通过以下方式处理请求吗? $form->handleRequest($request) 或 $form->bind($formData)。

$formData = new AqquiringRequestData();

$flow = $this->get('cib.form.flow.aqquiringreq');
$form = $flow->createForm();
$form->handleRequest($formData); // Your form needs to be associated with an entity some how

if ($form->isValid($form)) { // You are validating the form, right?

【讨论】:

  • 不,我正在使用 CraueFormFlowBundle 创建多步表单,它的使用方式与我在问题中所写的完全一样(基于捆绑作者的示例)。
猜你喜欢
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多