Symfony2自定义验证程序未加载服务

时间:2012-05-29 10:01:05

标签: symfony validation

编辑:已解决

我正在尝试构建一个作为服务运行的自定义验证器(主要用于获取实体管理器)。

我关注了doc和一些博客文章,但无法使其正常运行。 我没有得到任何错误消息,但是我的约束中的方法isValid永远不会被调用。

我的实体类(必须通过“UniqueLem”验证(请注意Doctrine验证器有效):

namespace Elyotech\VersionManagerBundle\Entity;

use Gedmo\Mapping\Annotation as Gedmo;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Me\AdminBundle\Validator\UniqueLem;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;

/**
 * @ORM\Entity(repositoryClass="Me\VersionManagerBundle\Repository\ProjectRepository")
 * @ORM\Table(name="project")
 * @UniqueLem
 * @UniqueEntity("name")
 */
class Project{...

我的约束类: 命名空间Elyotech \ AdminBundle \ Validator;

使用Symfony \ Component \ Validator \ Constraint;

/*
 * @Annotation
 * */

class UniqueLem extends Constraint
{
    public $message = 'This value is already used';
    public $entity;
    public $property;

    public function validatedBy()
    {
        die; // Test to check if function is called
        return 'validator.unique';
    }

    public function getTargets()
    {
        return self::CLASS_CONSTRAINT;
    }

验证

    namespace Elyotech\AdminBundle\Validator;

use Doctrine\ORM\EntityManager;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

class UniqueValidator extends ConstraintValidator
{
    private $entityManager;

    public function __construct( $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    public function isValid($value, Constraint $constraint) {
        $this->setMessage($constraint->message);
        return false;
    }

服务声明:

 my.validator.unique:
   class:      %my.validator.unique.class%
   arguments: [@doctrine.orm.entity_manager]
   tags:
        - { name: validator.constraint_validator, alias: validator.unique }

所以问题似乎不是来自服务,因为我从未到达UniqueLem / isValid()函数中的“die”。

谢谢!

0 个答案:

没有答案