Правило Uuid
Правило Uuid относится к группе ограничений валидации.
Оно вешается на поле формы или свойство сущности и проверяет,
что переданное значение соответствует формату UUID.
Это может быть UUID любой версии (v1, v3, v4, v5 и т.д.).
Правило не проверяет существование объекта с таким UUID в базе данных,
а только лишь его синтаксическую корректность.
Синтаксис
#[Uuid]
Либо в виде опции поля формы:
'constraints' => [
new Uuid(),
],
Пример
Давайте создадим простую форму с полем identifier,
к которому применено правило Uuid:
<?php
namespace AppForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormExtensionCoreTypeTextType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentValidatorConstraintsUuid;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('identifier', TextType::class, [
'constraints' => [
new Uuid(),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
// ...
]);
}
}
?>
Пример
Давайте проверим работу правила в контроллере. Передадим в форму корректный UUID и проверим, пройдёт ли валидация:
<?php
namespace AppController;
use AppFormArticleType;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function index(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->submit([
'identifier' => '123e4567-e89b-12d3-a456-426614174000',
]);
if ($form->isValid()) {
return new Response('valid uuid');
}
return new Response('invalid uuid');
}
}
?>
Результат выполнения кода для корректного UUID:
"valid uuid"
Пример
А теперь передадим в форму строку, которая не является UUID:
<?php
namespace AppController;
use AppFormArticleType;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function index(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->submit([
'identifier' => 'abcde',
]);
if ($form->isValid()) {
return new Response('valid uuid');
}
return new Response('invalid uuid');
}
}
?>
Результат выполнения кода для некорректного значения:
"invalid uuid"