Php 为什么我的验证组不工作?
我有一个拥有大量批准的实体。所有批准都是从BaseApproval类扩展而来的,我在该类中定义了一个验证组:Php 为什么我的验证组不工作?,php,validation,symfony,constraints,Php,Validation,Symfony,Constraints,我有一个拥有大量批准的实体。所有批准都是从BaseApproval类扩展而来的,我在该类中定义了一个验证组: abstract class BaseApproval { ... /** * @var string * * @ORM\Column(name="textField", type="text", nullable=true) * @Assert\NotBlank(groups={"required"}) */ p
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也有一个条件
我还添加了我想对验证组执行的操作。我认为也可以使用它们。存储批准的实际类需要扩展抽象类。我不确定您是否有一个名为BaseApproval的实体,但您需要这样一行class Approval extend BaseApproval{…@George实际的类是扩展类。SomeApproval扩展BaseApproval。找到了有问题的打字错误,但只与问题相关,而不是与问题相关。
/**
* @ORM\Entity
...
* @Assert\Callback(callback="validate")
*/
abstract class Approval
{
...
/**
* @param ExecutionContextInterface $context
*/
public function validate(ExecutionContextInterface $context)
{
// some logic messing with my AssertNotBlank constraints
}
}