Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么我的验证组不工作?_Php_Validation_Symfony_Constraints - Fatal编程技术网

Php 为什么我的验证组不工作?

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

我有一个拥有大量批准的实体。所有批准都是从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也有一个条件


我还添加了我想对验证组执行的操作。我认为也可以使用它们。

存储批准的实际类需要扩展抽象类。我不确定您是否有一个名为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 
    }
}