Goutte 表单提交错误值

问题描述

我正在尝试提交表单,但遇到了一个非常奇怪的问题。 表单有一个字段,它是一个数组。提交表单后,网站回复说缺少所需数据。如果我手动发布请求,负载是这样的:

"movimentiC59Nuovo.listaMovimentiItaliani[0].tipoLuogo": "PROVINVCIA","movimentiC59Nuovo.listaMovimentiItaliani[0].idobj": "","movimentiC59Nuovo.listaMovimentiItaliani[0].timeVar": "",

但是如果我尝试转储 $form->getValues(),响应是这样的:

"movimentiC59Nuovo.listaMovimentiItaliani[0][.tipoLuogo]" => "PROVINVCIA"
"movimentiC59Nuovo.listaMovimentiItaliani[0][.idobj]" => ""
"movimentiC59Nuovo.listaMovimentiItaliani[0][.timeVar]" => ""

如您所见,名称的最后一部分包含在括号中,我认为这就是问题的根源。

我尝试以这种方式手动创建这些输入:

$element = $domDocument->createElement('input');
$name = "movimentiC59Nuovo.listaMovimentiItaliani[{$key}]{$input}";
$element->setAttribute('name',$name);
$element->setAttribute('value',$movimento[$input]);
$el = new InputFormField($element);
$form->set($el);

但即使转储 $el 显示正确的名称,一旦我 set() 作为表单元素,格式返回原始。

我发现解决方案之一可能是创建一个数组并手动发布该数组,但是应该如何做呢?我应该如何使用 Goutte 客户端设置 POST 参数并不明确。我是这样初始化的:

$client = new Client();
$jar = new \GuzzleHttp\Cookie\CookieJar();
$guzzle = new \GuzzleHttp\Client([
   'timeout' => $timeout,'cookies' => $jar,]);
$client->setClient($guzzle);

$client->request('POST',$url,[
"movimentiC59Nuovo.listaMovimentiItaliani[0].tipoLuogo" => "PROVINVCIA","movimentiC59Nuovo.listaMovimentiItaliani[0].idobj" => "","movimentiC59Nuovo.listaMovimentiItaliani[0].timeVar" => "",]);

更新:我测试了手动 POST 而不是 $client->submit($form) 并且似乎工作正常。我不知道这是否可以被视为“错误”。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)