0

我有一个自定义验证器,我想从验证器访问整个实体。

我找到了类约束验证器http://symfony.com/doc/current/cookbook/validation/custom_constraint.html#class-constraint-validator但我不知道如何使用它。

在哪里设置验证器,目前我有这样的:

$metadata->addPropertyConstraint('doi', new IsDOI());

但是这个 si 只适用于参数,而不适用于整个类。我真的无法理解 symfony 的例子。

4

2 回答 2

1

如果我们不能在注释中做到这一点:

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Knp\DoctrineBehaviors\Model as ORMBehaviors;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\Mapping\ClassMetadata;

/*
* Project
* @ORM\Entity(repositoryClass="ProjectRepository")
*/
class Project
{
use ORMBehaviors\Translatable\Translatable;

/*
* =>  @ Assert\Valid not working on $translations, since tranlastion already defined by ORMBehaviors trait
*/
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
    //$metadata->addConstraint(new Assert\Valid());
    $metadata->addPropertyConstraint('translations', new Assert\Valid());
}
于 2015-09-29T14:27:57.363 回答
0

完成了,我唯一需要做的就是在实体类的顶部设置验证器:

 /**
 * Manuscript
 *
 * @IsDOI()
 * @ORM\Table(name="manuscripts")
 * @ORM\Entity
 * @ORM\HasLifecycleCallbacks
 * 
 */
class Manuscript
{...}
于 2013-07-16T06:49:07.940 回答