Метод has класса ConstraintViolationList
Метод has класса ConstraintViolationList
проверяет, содержит ли коллекция ошибок валидации
хотя бы одну ошибку. Метод не принимает параметров
и возвращает true, если коллекция не пуста,
и false, если ошибок нет. Метод удобно
использовать после вызова валидатора для проверки
результата валидации.
Синтаксис
public function has(): bool
Пример
Давайте создадим валидатор, проверим объект
с некорректными данными и вызовем метод has:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraints as Assert;
class Article
{
#[AssertNotBlank]
public string $title = '';
}
class ArticleController extends AbstractController
{
public function index(): Response
{
$article = new Article();
$validator = Validation::createValidator();
$errors = $validator->validate($article);
if ($errors->has()) {
return new Response('has errors');
}
return new Response('no errors');
}
}
?>
Результат выполнения кода:
"has errors"
Пример
Давайте проверим объект с корректными данными:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraints as Assert;
class Article
{
#[AssertNotBlank]
public string $title = 'article';
}
class ArticleController extends AbstractController
{
public function index(): Response
{
$article = new Article();
$validator = Validation::createValidator();
$errors = $validator->validate($article);
if ($errors->has()) {
return new Response('has errors');
}
return new Response('no errors');
}
}
?>
Результат выполнения кода:
"no errors"
Пример
Давайте используем метод has вместе
с методом count для подсчёта количества ошибок:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraints as Assert;
class Article
{
#[AssertNotBlank]
public string $title = '';
#[AssertLength(min: 5)]
public string $text = 'abc';
}
class ArticleController extends AbstractController
{
public function index(): Response
{
$article = new Article();
$validator = Validation::createValidator();
$errors = $validator->validate($article);
$res = 'no errors';
if ($errors->has()) {
$res = 'errors: ' . $errors->count();
}
return new Response($res);
}
}
?>
Результат выполнения кода:
"errors: 2"
Смотрите также
-
класс
ConstraintViolationList,
который хранит список ошибок валидации -
метод
count,
который возвращает количество ошибок -
метод
get,
который возвращает ошибку по индексу -
метод
validate,
который запускает валидацию объекта