Метод getPhpValues класса CrawlerForm
Метод getPhpValues класса CrawlerForm возвращает значения полей формы в виде массива, который можно передать в PHP-функцию или использовать для дальнейшей обработки. В отличие от метода getValues, который возвращает плоский массив с именами полей, метод getPhpValues преобразует имена полей с квадратными скобками в вложенную структуру PHP-массива. Параметров метод не принимает.
Синтаксис
$form->getPhpValues()
Пример
Давайте создадим форму с полями name и email, заполним их и получим значения через метод getPhpValues:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DomCrawler\Crawler;
class FormController extends AbstractController
{
public function index(): Response
{
$html = '<form method="post">
<input type="text" name="name" value="abcde">
<input type="text" name="email" value="user">
</form>';
$crawler = new Crawler($html);
$form = $crawler->filter('form')->form();
$res = $form->getPhpValues();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"name": "abcde", "email": "user"}
Пример
Давайте создадим форму с полем, имя которого содержит квадратные скобки, чтобы увидеть разницу между getValues и getPhpValues:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DomCrawler\Crawler;
class FormController extends AbstractController
{
public function index(): Response
{
$html = '<form method="post">
<input type="text" name="user[name]" value="abcde">
<input type="text" name="user[email]" value="user">
</form>';
$crawler = new Crawler($html);
$form = $crawler->filter('form')->form();
$res = $form->getPhpValues();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
{"user": {"name": "abcde", "email": "user"}}
Пример
Давайте получим значения полей формы и передадим их в качестве аргументов в метод контроллера:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\DomCrawler\Crawler;
class FormController extends AbstractController
{
public function index(): Response
{
$html = '<form method="post">
<input type="text" name="title" value="article">
<input type="text" name="content" value="hello">
</form>';
$crawler = new Crawler($html);
$form = $crawler->filter('form')->form();
$res = $form->getPhpValues();
return new Response($res['title'] . ' ' . $res['content']);
}
}
?>
Результат выполнения кода:
article hello
Смотрите также
-
метод
getValues,
который возвращает плоский массив значений формы -
метод
get,
который возвращает значение конкретного поля формы -
метод
set,
который устанавливает значение поля формы -
класс
CrawlerForm,
который представляет форму на странице