Правило LessThanOrEqual
Правило LessThanOrEqual относится к
группе ограничений валидации Symfony и
применяется к полям формы. Оно проверяет,
что переданное значение меньше или равно
числу, указанному в параметре value.
Если значение больше, форма считается
невалидной. Правило вешается на поле через
атрибут LessThanOrEqual или
добавляется в опции поля.
Синтаксис
#[LessThanOrEqual(value: number, message: 'text')]
Пример
Давайте создадим форму с полем count и
навесим на него правило LessThanOrEqual
со значением 10:
<?php
namespace App\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
use Symfony\Component\Validator\Constraints\LessThanOrEqual;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('count', IntegerType::class, [
'constraints' => [
new LessThanOrEqual([
'value' => 10,
'message' => 'The value must be less than or equal to 10.',
]),
],
]);
}
}
?>
Теперь создадим контроллер, который обрабатывает форму:
<?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() && $form->isValid()) {
return new Response('valid');
}
return new Response('invalid');
}
}
?>
Результат выполнения кода для значения 5:
"valid"
Пример
Давайте отправим в форму значение, которое
превышает допустимое, например 15:
<?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() && $form->isValid()) {
return new Response('valid');
}
$errors = $form->getErrors(true);
foreach ($errors as $error) {
return new Response($error->getMessage());
}
return new Response('invalid');
}
}
?>
Результат выполнения кода для значения 15:
"The value must be less than or equal to 10."
Пример
Давайте используем правило LessThanOrEqual
с атрибутом над свойством сущности:
<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Article
{
#[Assert\LessThanOrEqual(
value: 100,
message: 'The count must be less than or equal to 100.'
)]
private int $count = 0;
public function getCount(): int
{
return $this->count;
}
public function setCount(int $count): void
{
$this->count = $count;
}
}
?>
Теперь создадим форму на основе этой сущности:
<?php
namespace App\Form;
use App\Entity\Article;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\IntegerType;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('count', IntegerType::class);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Article::class,
]);
}
}
?>
Результат выполнения кода для значения 50:
"valid"
Смотрите также
-
правило
LessThan,
которое проверяет, что значение меньше заданного числа -
правило
GreaterThanOrEqual,
которое проверяет, что значение больше или равно заданному числу -
правило
Range,
которое проверяет, что значение входит в заданный диапазон -
метод
isValid,
который проверяет валидность формы