2016-06-10 65 views
1

我的问题是有关的symfony验证器组件。我不使用表格。我想移动验证规则对于每个实体分隔的类(如AuthorVlidator,BookingValidator等)。我怎样才能将它移动到各个班级,并定义规则?的Symfony验证

谢谢。

+0

如果我理解正确,您正在寻找[Validation Groups](http://symfony.com/doc/current/book/validation.html#validation-groups) –

+0

只需将验证组件注入到您的Validator类中,然后有它。不需要花哨。 – Cerad

回答

2

你为什么想将其移动到各个班级?使用注释很容易使用它。

这不是一个好主意,做它,但如果你真的想这样做,其他类,你可以在要验证每个类添加这个方法:

class YourObject 
{ 
    public static function loadValidatorMetadata(ClassMetadata $metadata) 
    { 
     YourObjectValidator::validate($this, $metadata); 
    } 
} 

和:

use Symfony\Component\Validator\Mapping\ClassMetadata; 
use Symfony\Component\Validator\Constraints\NotBlank; 

class YourObjectValidator 
{ 
    public static function validate(YourObject $object, ClassMetadata $metadata) 
    { 
     $metadata->addPropertyConstraint('name', new NotBlank()); 
    } 
} 

如果你想为根据性能值添加验证分开这个逻辑,它不是这样做的正确方法。你应该阅读文档,callback可能是一个解决方案。