2016-06-10 95 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可能是一個解決方案。