Метод validateProperty
Метод validateProperty класса Validator
проверяет значение одного свойства объекта
по ограничениям, заданным в его метаданных.
Первым параметром передаётся объект,
вторым - имя свойства, третьим - массив групп валидации.
Метод возвращает объект ConstraintViolationList
со списком найденных нарушений.
Синтаксис
public function validateProperty(object $object, string $propertyName, array $groups = null): ConstraintViolationListInterface
Пример
Давайте создадим сущность с ограничением на свойство title и проверим его через validateProperty:
<?php
namespace AppEntity;
use SymfonyComponentValidatorConstraints as Assert;
class Article
{
#[AssertNotBlank]
#[AssertLength(min: 3)]
private string $title = '';
public function getTitle(): string
{
return $this->title;
}
public function setTitle(string $title): void
{
$this->title = $title;
}
}
?>
Теперь проверим свойство title у пустого объекта:
<?php
namespace AppController;
use AppEntityArticle;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidatorValidatorInterface;
class ArticleController extends AbstractController
{
public function index(ValidatorInterface $validator): Response
{
$article = new Article();
$res = $validator->validateProperty($article, 'title');
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
"Object(AppEntityArticle).title: This value should not be blank."
Пример
Давайте зададим корректное значение и проверим свойство снова:
<?php
namespace AppController;
use AppEntityArticle;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidatorValidatorInterface;
class ArticleController extends AbstractController
{
public function index(ValidatorInterface $validator): Response
{
$article = new Article();
$article->setTitle('abcde');
$res = $validator->validateProperty($article, 'title');
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
""
Пример
Давайте передадим третьим параметром группу валидации 'create'
и проверим только ограничения этой группы:
<?php
namespace AppEntity;
use SymfonyComponentValidatorConstraints as Assert;
class Article
{
#[AssertNotBlank(groups: ['create'])]
#[AssertLength(min: 3, groups: ['create'])]
private string $title = '';
public function setTitle(string $title): void
{
$this->title = $title;
}
}
?>
Теперь проверим свойство title в группе 'create':
<?php
namespace AppController;
use AppEntityArticle;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidatorValidatorInterface;
class ArticleController extends AbstractController
{
public function index(ValidatorInterface $validator): Response
{
$article = new Article();
$res = $validator->validateProperty($article, 'title', ['create']);
return new Response((string) $res);
}
}
?>
Результат выполнения кода:
"Object(AppEntityArticle).title: This value should not be blank."
Смотрите также
-
класс
Validator,
который выполняет валидацию объектов -
метод
validate,
который проверяет весь объект целиком -
метод
validatePropertyValue,
который проверяет значение без объекта -
класс
ConstraintViolationList,
который хранит список нарушений валидации