Правило Sequentially
Правило Sequentially относится к группе ограничений валидации Symfony.
Оно позволяет объединить несколько ограничений в цепочку, которая
проверяется последовательно. Если одно из ограничений не проходит,
остальные проверки для данного поля пропускаются.
Это полезно, когда нужно избежать избыточных проверок или когда
последующее ограничение зависит от результата предыдущего.
Правило применяется к свойствам сущностей или к элементам форм.
Синтаксис
#[Sequentially(
constraints: [
new NotBlank(),
new Length(min: 3),
]
)]
Пример
Давайте создадим сущность с полем title, к которому применим
правило Sequentially с двумя ограничениями:
<?php
namespace AppEntity;
use SymfonyComponentValidatorConstraints as Assert;
class Article
{
#[AssertSequentially(
constraints: [
new AssertNotBlank(),
new AssertLength(min: 3),
]
)]
private string $title = '';
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): void
{
$this->title = $title;
}
}
?>
Если поле title пустое, сработает только ограничение
NotBlank, а проверка длины будет пропущена.
Пример
Давайте проверим работу правила в контроллере:
<?php
namespace AppController;
use AppEntityArticle;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidatorValidatorInterface;
class ArticleController extends AbstractController
{
public function validate(ValidatorInterface $validator): Response
{
$article = new Article();
$article->setTitle('');
$errors = $validator->validate($article);
if (count($errors) > 0) {
return new Response((string) $errors);
}
return new Response('valid');
}
}
?>
Результат выполнения кода для пустого заголовка:
"Object(AppEntityArticle).title: This value should not be blank."
Смотрите также
-
правило
NotBlank,
которое проверяет, что значение не пустое -
правило
Length,
которое проверяет длину строки -
правило
Collection,
которое применяет ограничения к элементам массива -
класс
Form,
который представляет форму в Symfony