繁体   English   中英

为什么我的验证组不起作用?

[英]Why does my validationgroup not work?

我有一个拥有大量批准的实体。 所有批准都是从BaseApproval类扩展的,在该类中我定义了一个验证组:

abstract class BaseApproval {
    ...
    /**
     * @var string
     *
     * @ORM\Column(name="textField", type="text", nullable=true)
     * @Assert\NotBlank(groups={"required"})
     */
    private $textField;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="approvedAt", type="datetime", nullable=true)
     * @Assert\NotBlank(groups={"required"})
     */
    private $approvedAt;

}

为了进行概念验证,我在ApprovalFormType中将setDefaultOptions为以下默认值:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults([
        'validation_groups' => function(FormInterface $form) {
            return ['Default', 'required'];
        }
    ]);

}

在实体中,批准如下添加:

MyEntity {

    /**
     * @var HseApproval
     * @ORM\OneToOne(targetEntity="Hn\AssetDbBundle\Entity\Approvals\SomeApproval", cascade={"persist"}, fetch="EAGER")
     * @Assert\Valid
     */

    private $someApproval;
}

但是,不会触发验证,因此将字段设置为好像所有验证都已禁用。 仅基于条件,这就是我要达到的目标。

我没有意识到BaseEntity也有一个回调验证器

/**
 * @ORM\Entity
 ...
 * @Assert\Callback(callback="validate")
 */

abstract class Approval
{
    ...

    /**
     * @param ExecutionContextInterface $context
     */
    public function validate(ExecutionContextInterface $context)
    {
        // some logic messing with my AssertNotBlank constraints 
    }
}

我还添加了我想对那里的验证组进行的操作。 我想也应该与他们一起工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM