Правило NegativeOrZero
Правило NegativeOrZero относится к секции form и
используется как ограничение валидации. Оно вешается
на свойство сущности или на поле формы и разрешает
только значения, которые меньше нуля или равны нулю.
Если значение положительное, валидация завершится
ошибкой. Правило удобно применять для скидок, долгов,
корректировок баланса и других величин, которые не
должны быть положительными.
Синтаксис
#[NegativeOrZero]
Пример
Давайте создадим сущность с полем amount и повесим
на него правило NegativeOrZero:
<?php
namespace AppEntity;
use SymfonyComponentValidatorConstraintsNegativeOrZero;
class Article
{
#[NegativeOrZero]
private int $amount = 0;
public function getAmount(): int
{
return $this->amount;
}
public function setAmount(int $amount): void
{
$this->amount = $amount;
}
}
?>
Теперь создадим форму для этой сущности:
<?php
namespace AppForm;
use AppEntityArticle;
use SymfonyComponentFormAbstractType;
use SymfonyComponentFormFormBuilderInterface;
use SymfonyComponentFormExtensionCoreTypeIntegerType;
use SymfonyComponentOptionsResolverOptionsResolver;
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder->add('amount', IntegerType::class);
}
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Article::class,
]);
}
}
?>
Пример
Давайте проверим валидацию для отрицательного значения:
<?php
namespace AppController;
use AppEntityArticle;
use AppFormArticleType;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(Request $request): Response
{
$article = new Article();
$article->setAmount(-5);
$form = $this->createForm(ArticleType::class, $article);
$form->submit(['amount' => -5]);
if ($form->isValid()) {
return new Response('valid');
}
return new Response('invalid');
}
}
?>
Результат выполнения кода:
valid
Пример
Давайте проверим валидацию для нуля:
<?php
namespace AppController;
use AppEntityArticle;
use AppFormArticleType;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(Request $request): Response
{
$article = new Article();
$article->setAmount(0);
$form = $this->createForm(ArticleType::class, $article);
$form->submit(['amount' => 0]);
if ($form->isValid()) {
return new Response('valid');
}
return new Response('invalid');
}
}
?>
Результат выполнения кода:
valid
Пример
Давайте проверим валидацию для положительного значения:
<?php
namespace AppController;
use AppEntityArticle;
use AppFormArticleType;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_form')]
public function form(Request $request): Response
{
$article = new Article();
$article->setAmount(5);
$form = $this->createForm(ArticleType::class, $article);
$form->submit(['amount' => 5]);
if ($form->isValid()) {
return new Response('valid');
}
return new Response('invalid');
}
}
?>
Результат выполнения кода:
invalid
Смотрите также
-
правило
Negative,
которое разрешает только отрицательные значения -
правило
Positive,
которое разрешает только положительные значения -
правило
PositiveOrZero,
которое разрешает положительные значения и ноль -
класс
Form,
который представляет форму в Symfony