Класс Validation
Класс Validation - это точка входа в сервис валидации Symfony.
Он содержит статические методы createValidator и createValidatorBuilder,
которые создают объект ValidatorInterface и ValidatorBuilder соответственно.
Первый метод удобен для быстрой валидации, второй - когда нужно
настроить валидатор: подключить свои constraint-валидаторы,
задать кэш метаданных или включить аннотации.
Синтаксис
Validation::createValidator(): ValidatorInterface
Validation::createValidatorBuilder(): ValidatorBuilder
Пример
Давайте создадим валидатор и проверим строку на длину:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraintsLength;
class ArticleController extends AbstractController
{
public function index(): Response
{
$validator = Validation::createValidator();
$violations = $validator->validate('abcde', [
new Length(['min' => 10]),
]);
return new Response((string) $violations);
}
}
?>
Результат выполнения кода:
"This value is too short. It should have 10 characters or more."
Пример
Давайте создадим валидатор через ValidatorBuilder и проверим объект:
<?php
namespace AppEntity;
use SymfonyComponentValidatorConstraints as Assert;
class Article
{
#[AssertNotBlank]
#[AssertLength(min: 3)]
public string $title = '';
#[AssertNotNull]
public ?int $views = null;
}
?>
<?php
namespace AppController;
use AppEntityArticle;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidation;
class ArticleController extends AbstractController
{
public function index(): Response
{
$builder = Validation::createValidatorBuilder();
$validator = $builder->enableAttributeMapping()->getValidator();
$article = new Article();
$res = $validator->validate($article);
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
"Object(AppEntityArticle).title: This value should not be blank. Object(AppEntityArticle).views: This value should not be null."
Смотрите также
-
класс
Validator,
который выполняет валидацию данных -
метод
validate,
который проверяет объект или значение -
метод
validateProperty,
который валидирует отдельное свойство объекта -
класс
ConstraintViolationList,
который хранит список нарушений