Symfony:如何对ArrayCollection使用断言/验证

Zwe*_*012 3 symfony-forms symfony

在Symfony 3中,不允许再使用它cascade_validation.所以你必须为类型做一个断言.但它不起作用,即使字段是BLANK但Assert表示NOtBlank,表单也是有效的.我有一个类参与者,我想在检查我的参与者模型时检查Adults ArrayCollection.

//Participant Model
    /**
         * @var ArrayCollection
         * @Assert\All({
         *     @Assert\Type(type="My\WebsiteBundle\Model\Adult"),
         * })
         */
        protected $adults;

//Adult Model
    class Adult
    {
        /**
         * @var string
         *
     * @Assert\NotBlank()
     */
    protected $salutation;

    /**
     * @var string
     *
     * @Assert\NotBlank()
     */
    protected $firstname;

    /**
     * @var string
     *
     * @Assert\NotBlank()
     */
    protected $lastname;
Run Code Online (Sandbox Code Playgroud)

Mat*_*teo 5

您应该使用doc中描述的有效声明http://symfony.com/doc/current/reference/constraints/Valid.html

例如:

    /**
     * @var ArrayCollection
     *
     * @Assert\All({
     *     @Assert\Type(type="My\WebsiteBundle\Model\Adult"),
     * })
     * @Assert\Valid
     */
    protected $adults;
Run Code Online (Sandbox Code Playgroud)

希望这有帮助