Метод has класса CrawlerForm
Метод has класса CrawlerForm проверяет,
существует ли в форме поле с указанным именем.
Первым параметром передаётся имя поля.
Метод возвращает true, если поле найдено,
и false в противном случае.
Объект CrawlerForm обычно получают
из краулера через метод forms или form.
Синтаксис
public function has(string $name): bool
Пример
Давайте создадим краулер с HTML-формой
и проверим наличие поля name:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentDomCrawlerCrawler;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '
<form method="post" action="/submit">
<input type="text" name="name" value="abcde">
<input type="text" name="email" value="user@example.com">
<button type="submit">Send</button>
</form>
';
$crawler = new Crawler($html);
$form = $crawler->form();
$res = $form->has('name');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
true
Пример
Давайте проверим наличие несуществующего поля phone:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentDomCrawlerCrawler;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '
<form method="post" action="/submit">
<input type="text" name="name" value="abcde">
<input type="text" name="email" value="user@example.com">
<button type="submit">Send</button>
</form>
';
$crawler = new Crawler($html);
$form = $crawler->form();
$res = $form->has('phone');
return new Response(var_export($res, true));
}
}
?>
Результат выполнения кода:
false
Пример
Давайте используем метод has
для условной установки значения поля:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentDomCrawlerCrawler;
use SymfonyComponentHttpFoundationResponse;
class ArticleController extends AbstractController
{
public function index(): Response
{
$html = '
<form method="post" action="/submit">
<input type="text" name="name" value="abcde">
<input type="text" name="email" value="user@example.com">
<button type="submit">Send</button>
</form>
';
$crawler = new Crawler($html);
$form = $crawler->form();
if ($form->has('email')) {
$form->set('email', 'hello@example.com');
}
return new Response($form->get('email'));
}
}
?>
Результат выполнения кода:
"hello@example.com"
Смотрите также
-
класс
CrawlerForm,
который представляет форму в краулере -
метод
get,
который возвращает значение поля формы -
метод
set,
который устанавливает значение поля формы -
метод
getValues,
который возвращает все значения полей формы