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

Класс CrawlerForm

Класс CrawlerForm представляет собой обёртку над HTML-формой, найденной в документе через Crawler. Объект этого класса возвращается методами selectButton и selectLink класса Crawler, а также методом forms. Через CrawlerForm можно заполнять поля формы, отправлять форму методом get или set и получать значения полей через getValues и getPhpValues.

Конструктор класса принимает объект Crawler, узел формы DOMNode, URI формы и HTTP-метод. Обычно объект создаётся автоматически при работе с Crawler, а не вручную.

Синтаксис

use Symfony\Component\DomCrawler\Form; $form = new Form( Crawler $node, DOMNode $formNode, string $uri, string $method = 'GET' );

Пример

Давайте найдём форму на странице и получим её URI и метод:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\HttpFoundation\Response; class FormController extends AbstractController { public function index(): Response { $html = '<form action="/submit" method="POST"> <input type="text" name="title" value="article"> <input type="text" name="author" value="user"> </form>'; $crawler = new Crawler($html); $form = $crawler->filter('form')->form(); echo $form->getUri(); echo $form->getMethod(); return new Response(); } } ?>

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

"/submit" "POST"

Пример

Давайте заполним поля формы через метод get и получим значения через getValues:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\HttpFoundation\Response; class FormController extends AbstractController { public function index(): Response { $html = '<form action="/submit" method="POST"> <input type="text" name="title" value="article"> <input type="text" name="author" value="user"> </form>'; $crawler = new Crawler($html); $form = $crawler->filter('form')->form(); $form->get('title')->setValue('hello'); $form->get('author')->setValue('abcde'); print_r($form->getValues()); return new Response(); } } ?>

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

["title" => "hello", "author" => "abcde"]

Пример

Давайте проверим наличие поля в форме через метод has:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\DomCrawler\Crawler; use Symfony\Component\HttpFoundation\Response; class FormController extends AbstractController { public function index(): Response { $html = '<form action="/submit" method="POST"> <input type="text" name="title" value="article"> </form>'; $crawler = new Crawler($html); $form = $crawler->filter('form')->form(); var_dump($form->has('title')); var_dump($form->has('author')); return new Response(); } } ?>

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

true false

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

  • класс Crawler,
    который выполняет навигацию по HTML-документу
  • метод forms,
    который возвращает формы документа
  • метод selectButton,
    который выбирает кнопку формы
  • метод getValues,
    который возвращает значения полей формы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить