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

Метод disableValidation

Метод disableValidation класса CrawlerForm отключает валидацию полей формы перед отправкой. По умолчанию Symfony проверяет, что все обязательные поля заполнены, а значения соответствуют типам. Если хотя бы одно поле не проходит проверку, форма не отправляется и выбрасывается исключение. Метод не принимает параметров и возвращает объект CrawlerForm, что позволяет использовать цепочку вызовов.

Синтаксис

$form->disableValidation();

Пример

Давайте создадим форму с обязательным полем и попробуем отправить её без заполнения. Сначала рассмотрим форму без отключения валидации:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; use Symfony\Component\DomCrawler\Crawler; class FormController extends AbstractController { public function index(): Response { $client = HttpClient::create(); $crawler = new Crawler(); $crawler->addHtmlContent(' <form action="/submit" method="post"> <input type="text" name="title" required> <button type="submit">Send</button> </form> '); $form = $crawler->filter('form')->form(); try { $client->request('POST', $form->getUri(), [ 'body' => $form->getValues(), ]); } catch (\Exception $e) { return new Response('Form is not valid: ' . $e->getMessage()); } return new Response('Form submitted'); } } ?>

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

"Form is not valid: The form is not valid"

Пример

Теперь отключим валидацию с помощью метода disableValidation и отправим ту же форму:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; use Symfony\Component\DomCrawler\Crawler; class FormController extends AbstractController { public function index(): Response { $client = HttpClient::create(); $crawler = new Crawler(); $crawler->addHtmlContent(' <form action="/submit" method="post"> <input type="text" name="title" required> <button type="submit">Send</button> </form> '); $form = $crawler->filter('form')->form(); $form->disableValidation(); $client->request('POST', $form->getUri(), [ 'body' => $form->getValues(), ]); return new Response('Form submitted'); } } ?>

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

"Form submitted"

Пример

Давайте отключим валидацию и заполним поле значением 'abcde' перед отправкой. Метод disableValidation возвращает объект формы, поэтому его можно объединить в цепочку с методом set:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpClient\HttpClient; use Symfony\Component\DomCrawler\Crawler; class FormController extends AbstractController { public function index(): Response { $client = HttpClient::create(); $crawler = new Crawler(); $crawler->addHtmlContent(' <form action="/submit" method="post"> <input type="text" name="title" required> <input type="text" name="body" required> <button type="submit">Send</button> </form> '); $form = $crawler->filter('form')->form(); $form->disableValidation(); $form->set('title', 'abcde'); $values = $form->getValues(); return new Response(json_encode($values)); } } ?>

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

{"title": "abcde", "body": ""}

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

  • класс CrawlerForm,
    который представляет форму на странице
  • метод set,
    который задаёт значение поля формы
  • метод getValues,
    который возвращает значения полей формы
  • метод has,
    который проверяет наличие поля в форме
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить