Метод getValues класса CrawlerForm
Метод getValues класса CrawlerForm
возвращает ассоциативный массив, содержащий
значения всех полей формы. Ключами массива
выступают имена полей, а значениями - текущие
значения этих полей. Метод не принимает
параметров и возвращает массив.
Метод удобен, когда нужно получить все данные формы сразу, например, для дальнейшей отправки или проверки. Значения извлекаются из полей ввода, которые были найдены краулером на странице.
Синтаксис
$form->getValues();
Пример
Давайте создадим краулер, найдём форму и получим значения всех её полей:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DomCrawler\Crawler;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '
<form>
<input type="text" name="login" value="user">
<input type="text" name="email" value="abcde">
</form>
';
$crawler = new Crawler($html);
$form = $crawler->filter('form')->form();
$res = $form->getValues();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"login": "user", "email": "abcde"}
Пример
Давайте изменим значение поля через метод
set, а затем получим обновлённые значения
всех полей:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DomCrawler\Crawler;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '
<form>
<input type="text" name="login" value="user">
<input type="text" name="email" value="abcde">
</form>
';
$crawler = new Crawler($html);
$form = $crawler->filter('form')->form();
$form->set('login', 'hello');
$res = $form->getValues();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"login": "hello", "email": "abcde"}
Пример
Давайте получим значения полей формы, содержащей чекбокс и поле выбора:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DomCrawler\Crawler;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '
<form>
<input type="text" name="name" value="article">
<input type="checkbox" name="active" value="1" checked>
<select name="role">
<option value="admin">Admin</option>
<option value="user" selected>User</option>
</select>
</form>
';
$crawler = new Crawler($html);
$form = $crawler->filter('form')->form();
$res = $form->getValues();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"name": "article", "active": "1", "role": "user"}
Смотрите также
-
класс
CrawlerForm,
который представляет форму на странице -
метод
get,
который возвращает значение одного поля формы -
метод
set,
который устанавливает значение поля формы -
метод
getPhpValues,
который возвращает значения полей в формате PHP