簡體   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