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