private function createRequestFromForm(Step $step, ValueBag $values, Crawler $crawler = null)
{
$selector = $step->getFormSelector();
$form = $this->language->evaluate($selector, ['_crawler' => $crawler] + $values->all(true));
if (!count($form)) {
throw new CrawlException(sprintf('Unable to submit form as button "%s" does not exist.', $selector));
}
$formValues = $this->evaluateValues($values, $step->getFormValues());
$form = $form->form($formValues);
$headers = $step->getHeaders();
$body = $this->createBody($values, $form->getValues(), $headers, $step->isJson());
/*
// FIXME: when we have files, we need NOT use form_params
if ($files = $form->getFiles()) {
foreach ($files as $name => $file) {
'name' => $name,
'contents' => $file,
}
}
*/
return new Request($form->getMethod(), $this->fixUri($step, $form->getUri()), $headers, $body);
}