[英]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.