Правило GreaterThanOrEqual
Правило GreaterThanOrEqual относится к группе
ограничений валидации Symfony и применяется
к полям формы или свойствам сущности. Оно
проверяет, что переданное значение больше или
равно указанному числу. Первым параметром
передаётся число для сравнения. Если значение
поля меньше этого числа, валидация завершается
ошибкой.
Правило удобно использовать для проверки числовых полей: возраста, количества, цены, рейтинга и других показателей, которые не должны опускаться ниже допустимого минимума.
Синтаксис
#[Assert\GreaterThanOrEqual(value)]
В параметре value задаётся число, с которым
сравнивается значение поля. Также доступны
параметры message и groups.
Пример
Давайте создадим сущность с полем quantity
и навесим на него правило GreaterThanOrEqual
со значением 1:
<?php
namespace App\Entity;
use Symfony\Component\Validator\Constraints as Assert;
class Product
{
#[Assert\GreaterThanOrEqual(1)]
private int $quantity = 0;
public function getQuantity(): int
{
return $this->quantity;
}
public function setQuantity(int $quantity): void
{
$this->quantity = $quantity;
}
}
?>
Теперь проверим значение 0 через валидатор:
<?php
namespace App\Controller;
use App\Entity\Product;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class ProductController extends AbstractController
{
#[Route('/product', name: 'product_check')]
public function check(ValidatorInterface $validator): Response
{
$product = new Product();
$product->setQuantity(0);
$errors = $validator->validate($product);
if (count($errors) > 0) {
return new Response((string) $errors);
}
return new Response('valid');
}
}
?>
Результат выполнения кода:
Object(App\Entity\Product).quantity: This value should be greater than or equal to 1.
Пример
Давайте передадим значение 5 и убедимся,
что валидация проходит успешно:
<?php
namespace App\Controller;
use App\Entity\Product;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Validator\Validator\ValidatorInterface;
class ProductController extends AbstractController
{
#[Route('/product', name: 'product_check')]
public function check(ValidatorInterface $validator): Response
{
$product = new Product();
$product->setQuantity(5);
$errors = $validator->validate($product);
if (count($errors) > 0) {
return new Response((string) $errors);
}
return new Response('valid');
}
}
?>
Результат выполнения кода:
"valid"
Пример
Давайте используем правило в форме через
constraints у поля quantity:
<?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 as Assert;
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('quantity', IntegerType::class, [
'constraints' => [
new Assert\GreaterThanOrEqual([
'value' => 1,
'message' => 'Количество должно быть не меньше {{ compared_value }}.',
]),
],
]);
}
}
?>
Если пользователь введёт 0, форма вернёт
ошибку с текстом:
"Количество должно быть не меньше 1."
Смотрите также
-
правило
GreaterThan,
которое проверяет строгое превышение значения -
правило
LessThanOrEqual,
которое проверяет значение меньше или равно заданному -
правило
Range,
которое задаёт диапазон допустимых значений -
правило
PositiveOrZero,
которое проверяет положительное число или ноль