Zend_Http_Client を使用して、一連のデータを PHP を実行しているサーバーに POST しています。ただし、サーバーはフォームのデータを期待していますmyField[]
。つまり、一連のチェックボックスがあり、ユーザーは複数のチェックボックスをオンにできます。私の現在のコードは次のとおりです。
foreach ($myValues as $value) {
$this->client->setParameterPost('myField[]', $value);
}
ただし、Zend_Http_Client は、ループを通過するたびに新しい値で単純に上書きしているようです。 Zend_Http_Client を使用して同じ名前myField[]
の複数の POST フィールドを追加するにはどうすればよいですか?
アップデート
Zend_Http_Client コード自体をハッキングすることで、実際にこれを行う方法を見つけました。ただし、これは理想的ではありません。これが私がそれをした方法です:
まず、次のように POST フィールドに値を追加するだけです。
$myValues = array(0,1,2);
$this->client->setParameterPost('myField', $myValues);
function_prepareBody()
では、Zend_Http_Client が次のコードを使用して POST データを作成します。
$body = http_build_query($this->paramsPost, '', '&');
ビルドする POST データを見ると、次のようになります。
myField[0]=0&myField[1]=1&myField[2]=2
もちろん、url エンコードされているので、次のようになります。
myField%5B0%5D=0&myField%5B1%5D=1&myField%5B2%D=2
preg_replace
そのため、[0] -> []、[1] -> [] などを作成するためにa を追加しました。
$body = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '%5B%5D=', $body);
ライブラリ コードを変更せずに Zend_Http_Client を使用したいのですが、今のところこれで問題ありません。ライブラリをハッキングせずにそれを行う方法についての提案に非常に感謝しています。