2015-01-14 70 views
1

我正在構建一個Entity並嘗試使用Symfony驗證程序組件驗證數據。Symfony驗證PHP映射

這裏是我的代碼:

class Data 
{ 
    protected $name; 

    public static function loadValidatorMetadata(ClassMetadata $metadata) 
    { 
     $metadata->addPropertyConstraint('name', new Assert\NotBlank()); 
    } 
} 

$data = new Data; // Not putting in anything, just leaving things blank. 
$validator = Validation::createValidatorBuilder() 
     ->getValidator(); 

$errors = $validator->validate($data); 

$errors返回0,做一個數,我的代碼檢查的元數據功能獲得的跳過。任何想法我在這裏做錯了嗎?

+0

您是否嘗試過使用註釋來定義您的驗證約束? – PressingOnAlways

+0

我這樣做,但約束沒有正常自動加載,並導致更多的問題,那麼它是值得的。 – psion

+0

這聽起來像是其他的錯誤 - 它應該只是工作... – PressingOnAlways

回答

0

嘗試教義註冊驗證約束註解第一:

use Symfony\Component\Validator\Validation; 
use Symfony\Component\Validator\Constraints as Assert; 
use Doctrine\Common\Annotations\AnnotationRegistry; 

class Data 
{ 
    /** 
    * @Assert\NotBlank 
    */ 
    protected $name; 
} 

AnnotationRegistry::registerAutoloadNamespace("Symfony\Component\Validator\Constraint", "vendor/symfony/validator"); 

$validator = Validation::createValidatorBuilder() 
    ->enableAnnotationMapping() 
    ->getValidator(); 

$data = new Data(); 
$errors = $validator->validate($data); 
0

差不多,只是缺少addMethodMapping()

$validator = Symfony\Component\Validator\Validation::createValidatorBuilder() 
     ->addMethodMapping('loadValidatorMetadata') 
     ->getValidator(); 

我知道這個問題是舊的,但它是我的前搜索結果,所以我想我會提供答案。