问题描述
我正在尝试提交表单,但遇到了一个非常奇怪的问题。 表单有一个字段,它是一个数组。提交表单后,网站回复说缺少所需数据。如果我手动发布请求,负载是这样的:
"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 (将#修改为@)