2015-01-14 3 views
1

Я строю Entity и пытаюсь проверить данные с помощью компонента Symfony Validator Component.Symfony Validation 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(); 

Я знаю, вопрос старый, но это был мой лучший результат поиска, поэтому я подумал, что дам ответ.

Смежные вопросы