У меня есть моя настройка validation.yml в моих каталогах Ресурсы/config. Я включил использование валидатор в моем config.yml:Проверки Symfony2 (yml) игнорируются
framework:
validation: { enabled: true, enable_annotations: false }
Ресурсы/конфигурации/validation.yml:
MyBundle\AppBundle\Handler\SearchModel:
properties:
search:
- Length:
min: 2
max: 50
minMessage: "Your string must be at least {{ limit }} characters long"
maxMessage: "Your string cannot be longer than {{ limit }} characters long"
В моем контроллере я делаю:
$validator = $this->get('validator');
$errors = $validator->validate($searchModel);
Я уверен (потому что я дважды проверял), что свойство модели, подлежащей проверке, является строкой (1) 1 char. (Должно быть минимальным 2!)
Но var_dump() из $ ошибок с указанием:
object(Symfony\Component\Validator\ConstraintViolationList)#327 (1) {
["violations":"Symfony\Component\Validator\ConstraintViolationList":private]=>
array(0) {
}
}
Таким образом, никаких ошибок не выбрасываются. Как я могу это решить? Я хочу, чтобы валидатор работать :)
Update
Я получил его на работу (в настоящее время) с обходным. Я добавил метод loadValidatorMetaData для класса (SearchModel) для проверки.
public static function loadValidatorMetadata(ClassMetadata $metadata)
{
$metadata
->addPropertyConstraint(
'search',
new Assert\Length(
array('min' => 2, 'minMessage' => 'Error message.')
)
);
}
При проверке $ validator-> validate ($ searchModel); он возвращает ошибку, поэтому проверки работают. Но не с .yml файлом :(
Начните с примера в документах: http://symfony.com/doc/current/book/validation.html#using-the-validator-service. Замените «довольно уверенно» абсолютно уверенным, тестируя новый экземпляр вашей модели поиска. Возможно, кеш требует очистки. И ваш файл проверки находится в комплекте Symfony 2, который загружен в ваш AppKernel? – Cerad
Спасибо за ответ. Я повторно протестировал его, очистил кеш для правильного env. Также мой validation.yml выглядит корректно. Еще ничего. Возможно ли, что он работает только для моделей в каталоге сущностей? – Faiawuks
Он будет работать для всех объектов. Дважды проверьте полное имя. Может быть, опечатка в пространстве имен? – Cerad