3

PUT リクエストでパラメーターを送信する方法を理解しようとしています。私はうまく機能するjavascriptインターフェースを持っているので、サーバー側が機能することはわかっていますが、ユニットテストはPUTパラメーターを正しく送信しません。これが私が試したことです:

$this->request->getQuery()->set("id", $id);
$params = array(
        'attribute' => 'email',
        'email' => 'new_email@email.com',
);
// Set the data to be validated
$this->request->setMethod('PUT');

// Send the additional parameters
$this->request->setContent(json_encode($params));

サーバーが $params キーの「属性」を探しているため、これはエラーになりますが、サーバー上の $params 配列は空です - $params が渡されませんでした。

foreach ($params as $n => $v) {
    $this->routeMatch->setParam($n, $v);
}

foreach ($params as $n => $v) {
    $this->request->getQuery()->set($n, $v);
}

foreach ($params as $n => $v) {
    $this->request->getPost()->set($n, $v);
}

zf2でPUTパラメータを送信する適切な方法は何ですか?

4

1 に答える 1

3

Content-Type解決策は、ヘッダーをに設定することapplication/jsonです。それで

$this->request->setContent(json_encode($params));

動作します。唯一のことは、使用していたすべての POST リクエストが壊れたことですgetPost()->set($n,$v)。これらの各テストに戻って、同じ setContent を実行する必要がありましたが、合格しました。

于 2013-05-01T19:50:32.077 に答える