Symfony:如何为 ArrayCollection 使用 Assert/Validation

Symfony: How to use Assert/Validation for ArrayCollection

在 Symfony 3 中,不再允许使用 cascade_validation。所以你必须为类型做一个断言。但它不起作用,即使字段为空白但 Assert 表示 NOtBlank,表单仍然有效。我有一个 class 参与者,我想在检查我的参与者模型时检查 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;

您应该使用文档http://symfony.com/doc/current/reference/constraints/Valid.html中描述的有效资产

例如:

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

希望对您有所帮助