LEM*_*M01 5 validation symfony
编辑:已解决
我正在尝试构建一个作为服务运行的自定义验证器(主要用于获取实体管理器).
我按照文档和一些博客文章但无法使其工作.我没有得到任何错误消息,但从来没有调用我的约束方法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{...
Run Code Online (Sandbox Code Playgroud)
我的Constraint类: 命名空间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;
}
Run Code Online (Sandbox Code Playgroud)
验证器
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;
}
Run Code Online (Sandbox Code Playgroud)
服务声明:
my.validator.unique:
class: %my.validator.unique.class%
arguments: [@doctrine.orm.entity_manager]
tags:
- { name: validator.constraint_validator, alias: validator.unique }
Run Code Online (Sandbox Code Playgroud)
所以问题似乎不是来自服务,因为我从未到达UniqueLem/isValid()函数中的"死".
谢谢!
| 归档时间: |
|
| 查看次数: |
2838 次 |
| 最近记录: |