Правило LessThan
Правило LessThan используется в формах Symfony для валидации числовых значений. Оно гарантирует, что значение поля меньше указанного числа. Первым параметром передаётся число, с которым сравнивается значение поля. Правило можно применять как к числам, так и к датам.
Синтаксис
#[LessThan(value: number, message: 'text')]
Пример
Давайте создадим простую форму с полем age и применим к нему правило LessThan, чтобы значение было меньше 100:
<?php
namespace AppForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentFormExtensionCoreTypeIntegerType;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentValidatorConstraintsLessThan;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('age', IntegerType::class, [
'constraints' => [
new LessThan(100),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => null,
]);
}
}
?>
Если пользователь введёт число 150, форма не пройдёт валидацию, и появится сообщение об ошибке.
Пример
Давайте изменим сообщение об ошибке с помощью параметра message:
<?php
namespace AppForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentFormExtensionCoreTypeIntegerType;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentValidatorConstraintsLessThan;
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('age', IntegerType::class, [
'constraints' => [
new LessThan([
'value' => 100,
'message' => 'The age must be less than {{ compared_value }}.',
]),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => null,
]);
}
}
?>
Теперь при вводе значения 150 пользователь увидит сообщение: "The age must be less than 100.".
Пример
Правило LessThan также можно применять к датам. Давайте создадим форму с полем date и потребуем, чтобы дата была меньше '2025-01-01':
<?php
namespace AppForm;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentFormExtensionCoreTypeDateType;
use SymfonyComponentOptionsResolverOptionsResolver;
use SymfonyComponentValidatorConstraintsLessThan;
class EventType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('date', DateType::class, [
'constraints' => [
new LessThan('2025-01-01'),
],
]);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => null,
]);
}
}
?>
Если пользователь выберет дату '2025-06-15', форма не пройдёт валидацию.
Смотрите также
-
правило
GreaterThan,
которое проверяет, что значение больше заданного -
правило
LessThanOrEqual,
которое проверяет, что значение меньше или равно заданному -
правило
Range,
которое проверяет, что значение входит в диапазон -
правило
Positive,
которое проверяет, что значение положительное