Правило Negative
Правило Negative используется в формах Symfony
для валидации полей. Оно проверяет, что значение
является отрицательным числом. Правило вешается
на поле формы через атрибут #[Assert\Negative].
Если значение не является отрицательным, форма
не проходит валидацию и выводится сообщение об ошибке.
Синтаксис
#[Assert\Negative(message: message)]
Пример
Давайте создадим форму с полем, которое должно содержать отрицательное число:
<?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\Validator\Constraints\Negative;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('count', IntegerType::class, [
'constraints' => [
new Negative(),
],
]);
}
}
?>
Если пользователь введёт положительное число,
валидация не пройдёт. Результат выполнения
для значения 5:
"Это значение должно быть отрицательным."
Пример
Давайте укажем своё сообщение об ошибке
для правила Negative:
<?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\Validator\Constraints\Negative;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('count', IntegerType::class, [
'constraints' => [
new Negative(
message: 'Число должно быть отрицательным.'
),
],
]);
}
}
?>
Если пользователь введёт число 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('Форма прошла валидацию');
}
return new Response('Форма не прошла валидацию');
}
}
?>
Результат выполнения кода для значения -5:
"Форма прошла валидацию"
Смотрите также
-
правило
Positive,
которое проверяет положительное значение -
правило
PositiveOrZero,
которое проверяет положительное значение или ноль -
правило
NegativeOrZero,
которое проверяет отрицательное значение или ноль -
правило
Range,
которое проверяет попадание в диапазон значений