Правило Positive
Правило Positive относится к секции form
и проверяет, что переданное значение является
положительным числом. Оно вешается на поле формы
и возвращает ошибку валидации, если значение
меньше или равно нулю. Правило принимает параметр
message, который задаёт текст сообщения
об ошибке при неудачной проверке.
Синтаксис
#[Positive(message: 'message')]
Пример
Давайте создадим форму с полем quantity
и повесим на него правило Positive:
<?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\Positive;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('quantity', IntegerType::class, [
'constraints' => [
new Positive([
'message' => 'The value must be positive.',
]),
],
]);
}
}
?>
Пример
Давайте отправим в форму значение 0
и проверим, что вернёт валидация:
<?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->handleRequest($request);
if ($form->isSubmitted()) {
if ($form->isValid()) {
return new Response('valid');
}
$errors = $form->getErrors(true);
foreach ($errors as $error) {
return new Response($error->getMessage());
}
}
return $this->render('article/form.html.twig', [
'form' => $form,
]);
}
}
?>
Результат выполнения кода для значения 0:
"The value must be positive."
Пример
Давайте отправим в форму значение 5
и проверим результат валидации:
<?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->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
return new Response('valid');
}
return $this->render('article/form.html.twig', [
'form' => $form,
]);
}
}
?>
Результат выполнения кода для значения 5:
"valid"
Пример
Давайте используем правило Positive
вместе с правилом LessThanOrEqual,
чтобы ограничить значение сверху:
<?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\LessThanOrEqual;
use Symfony\Component\Validator\Constraints\Positive;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('quantity', IntegerType::class, [
'constraints' => [
new Positive([
'message' => 'The value must be positive.',
]),
new LessThanOrEqual([
'value' => 100,
'message' => 'The value must be less than or equal to {{ compared_value }}.',
]),
],
]);
}
}
?>
Смотрите также
-
правило
PositiveOrZero,
которое проверяет, что значение больше или равно нулю -
правило
Negative,
которое проверяет, что значение является отрицательным числом -
правило
GreaterThan,
которое проверяет, что значение больше заданного числа -
правило
Range,
которое проверяет, что значение входит в заданный диапазон