РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
465 of 1361 menu

Метод transform класса CallbackTransformer

Метод transform класса CallbackTransformer позволяет изменить значение проверяемого свойства перед тем, как к нему будут применены ограничения валидации. Он принимает исходное значение в качестве первого параметра и возвращает преобразованное значение. Этот метод особенно полезен, когда необходимо нормализовать данные или извлечь часть значения для последующей проверки.

Синтаксис

public function transform(mixed $value): mixed

Пример

Давайте создадим класс-трансформер, который будет преобразовывать строку в верхний регистр перед валидацией:

<?php namespace App\Validator; use Symfony\Component\Validator\Constraints\Callback; use Symfony\Component\Validator\Context\ExecutionContextInterface; class UpperCaseTransformer extends CallbackTransformer { public function transform(mixed $value): mixed { return strtoupper($value); } public function reverseTransform(mixed $value): mixed { return strtolower($value); } } ?>

Пример

Давайте применим трансформер к свойству сущности через ограничение Callback:

<?php namespace App\Entity; use App\Validator\UpperCaseTransformer; use Symfony\Component\Validator\Constraints as Assert; use Symfony\Component\Validator\Context\ExecutionContextInterface; class Article { #[Assert\Callback([UpperCaseTransformer::class, 'transform'])] private string $title = ''; public function getTitle(): string { return $this->title; } public function setTitle(string $title): void { $this->title = $title; } } ?>

Пример

Давайте проверим работу трансформера с помощью валидатора:

<?php namespace App\Controller; use App\Entity\Article; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Validator\Validation; class ArticleController extends AbstractController { #[Route('/validate', name: 'article_validate')] public function validate(): Response { $article = new Article(); $article->setTitle('abcde'); $validator = Validation::createValidator(); $violations = $validator->validate($article); return new Response((string) $violations); } } ?>

Результат выполнения кода:

""

Смотрите также

  • класс CallbackTransformer,
    который преобразует значения при валидации
  • метод reverseTransform,
    который выполняет обратное преобразование
  • класс Validator,
    который выполняет валидацию объектов
  • метод validate,
    который запускает процесс валидации
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить