РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
351 of 1361 menu

Правило Issn

Правило Issn относится к группе ограничений валидации Symfony и проверяет, что значение поля представляет собой корректный ISSN. ISSN - это международный стандартный номер сериального издания, который состоит из восьми цифр, разделённых дефисом на две группы по четыре цифры. Последняя цифра может быть цифрой от 0 до 9 или символом 'X'. Правило подходит для проверки полей формы, содержащих номера журналов, газет и других периодических изданий.

Синтаксис

#[Issn]

Также правило можно использовать без атрибута, через класс Issn в опциях формы:

use Symfony\Component\Validator\Constraints\Issn; $constraint = new Issn();

Пример

Давайте создадим форму с полем issn и повесим на него правило Issn:

<?php namespace App\Form; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Validator\Constraints\Issn; class ArticleType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder->add('issn', TextType::class, [ 'constraints' => [ new Issn(), ], ]); } } ?>

Теперь создадим контроллер, который принимает форму и проверяет её валидность:

<?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('form is valid'); } return new Response('form is invalid'); } } ?>

Если отправить корректный ISSN '0378-5955', то форма будет признана валидной:

"form is valid"

Пример

Давайте отправим некорректный ISSN '1234-5678' и посмотрим на результат:

"form is invalid"

Чтобы получить текст ошибки, можно вывести его в Twig через переменную form:

{{ form_errors(form.issn) }}

Результат выполнения кода для некорректного значения:

"This value is not a valid ISSN."

Пример

Давайте используем правило Issn напрямую, без формы, через сервис валидатора:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Validator\Constraints\Issn; use Symfony\Component\Validator\Validation; class ArticleController extends AbstractController { public function index(): Response { $validator = Validation::createValidator(); $res = $validator->validate('0378-5955', [ new Issn(), ]); if (count($res) === 0) { return new Response('issn is valid'); } return new Response('issn is invalid'); } } ?>

Результат выполнения кода:

"issn is valid"

Смотрите также

  • правило Isbn,
    которое проверяет корректность ISBN
  • правило Regex,
    которое проверяет значение по регулярному выражению
  • правило Length,
    которое проверяет длину значения
  • класс Form,
    который представляет форму в Symfony
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить