Правило IdenticalTo
Правило IdenticalTo относится к классу ограничений
Symfony\Component\Validator\Constraints\IdenticalTo
и применяется к полям формы. Оно проверяет, что переданное
значение строго равно (===) заданному значению.
Первым параметром передаётся значение для сравнения,
которое указывается в опции value. Если значение
поля не идентично указанному, форма считается невалидной.
Синтаксис
use Symfony\Component\Validator\Constraints\IdenticalTo;
new IdenticalTo(
value: mixed,
message: string
);
Пример
Давайте создадим форму с полем code и повесим
на него правило IdenticalTo, которое требует
значение 'abcde':
<?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\IdenticalTo;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('code', TextType::class, [
'constraints' => [
new IdenticalTo('abcde'),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([]);
}
}
?>
Давайте обработаем форму в контроллере и выведем результат валидации:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
echo 'valid';
} else {
echo 'not valid';
}
}
return new Response('ok');
}
}
?>
Результат выполнения кода при значении 'abcde':
"valid"
Результат выполнения кода при значении 'xyz':
"not valid"
Пример
Давайте создадим форму с полем count и повесим
на него правило IdenticalTo, которое требует
числовое значение 5:
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Validator\Constraints\IdenticalTo;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('count', IntegerType::class, [
'constraints' => [
new IdenticalTo(5),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([]);
}
}
?>
Давайте обработаем форму в контроллере и выведем результат валидации:
<?php
namespace App\Controller;
use App\Form\ArticleType;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
class ArticleController extends AbstractController
{
public function index(Request $request): Response
{
$form = $this->createForm(ArticleType::class);
$form->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
echo 'valid';
} else {
echo 'not valid';
}
}
return new Response('ok');
}
}
?>
Результат выполнения кода при значении 5:
"valid"
Результат выполнения кода при значении 6:
"not valid"