【问题标题】:Symfony + Doctrine + Annotation validation not work in formsSymfony + Doctrine + Annotation 验证在表单中不起作用
【发布时间】:2013-03-26 16:45:43
【问题描述】:

我在实体定义中使用原则注释来定义每个变量的行为,即:

@ORM\Column(type="string", length=50, nullable=false)

如果我提交表单时将字段留空,它会通过验证,但是(当然)我收到关于 INSERT 语句的错误,因为他无法插入 NULL 值。 这怎么可能?

【问题讨论】:

    标签: forms validation symfony doctrine-orm annotations


    【解决方案1】:

    这是因为 Symfony 不会根据 Doctrine 注释自动验证您的表单输入。

    Symfony2 附带了一个Validator 组件,它使这项任务变得简单而透明。该组件基于JSR303 Bean Validation specification

    http://symfony.com/doc/current/book/validation.html阅读实施情况

    这是一个可能对您有所帮助的验证器注释示例:

    // Acme/TaskBundle/Entity/Example.php
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Example
    {
        /**
         * @Assert\NotBlank()
         * @Assert\MaxLength(50)
         * @ORM\Column(type="string", length=50, nullable=false)
         */
        public $parameter;
    }
    

    【讨论】:

    • 我的$form->isValid() 总是返回真!为什么?
    • 我假设因为你没有定义任何规则/约束,所以没有定义规则,没有规则被破坏,因此表单是有效的。
    • 阅读Symfony Form Validation上的手册
    • 我读过它,在 Validation and Forms 一章中说我可以使用表单表单 isValid...并且不需要验证器...所以我不需要'不明白我应该在哪里指定这个约束......
    • 您还可以在一个文件中定义所有约束,在validation.yml中。 link
    猜你喜欢
    • 2017-02-27
    • 1970-01-01
    • 2021-08-28
    • 2021-12-01
    • 2021-07-20
    • 2013-07-07
    • 2017-07-12
    • 2016-11-11
    相关资源
    最近更新 更多