Правило Ulid
Правило Ulid относится к секции form и проверяет,
что значение поля является валидным ULID.
ULID (Universally Unique Lexicographically Sortable Identifier) -
это 26-символьный идентификатор, состоящий из букв
и цифр в формате Base32. Правило можно использовать
как в форме, так и в виде аннотации/атрибута для сущности.
Синтаксис
new Ulid(
message: 'Сообщение об ошибке'
)
Пример
Давайте создадим форму с полем identifier
и повесим на него правило Ulid:
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\Ulid;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('identifier', TextType::class, [
'constraints' => [
new Ulid(),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([]);
}
}
?>
Пример
Давайте проверим валидное значение ULID:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->submit([
'identifier' => '01ARZ3NDEKTSV4RRFFQ69G5FAV',
]);
$res = $form->isValid();
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим невалидное значение ULID:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->submit([
'identifier' => 'abcde',
]);
$res = $form->isValid();
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте выведем сообщение об ошибке при невалидном значении:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->submit([
'identifier' => 'abcde',
]);
$errors = $form->get('identifier')->getErrors();
$res = [];
foreach ($errors as $error) {
$res[] = $error->getMessage();
}
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
["This value is not a valid ULID."]