2016-10-26 4 views
0

私はPUTメソッドスリムv3のPUTメソッドとPOSTデータを取得

$app->put('/notifications/{email}', 'add_email_address');

と機能、それがどのように見えるために使用するデータベース内のメール更新するルートを追加しました:

function add_email_address($request, $response, $args) { 

    $email = $args['email']; 
    $addon_email = $request->getParam('addon_email', null); 

    echo "ADD/UPDATE $email with $addon_email"; 

} 

UPDATEをフォーム入力ポストでPUTメソッドをテストしていますaddon_email = [email protected]$addon_emailの検索値が空です。

私が間違っていることを教えてください。

答えて

0

私はそれが唯一のGETメソッドのgetParam作品のように見えます

$allPostPutVars = $request->getParsedBody(); 
$addon_email = $allPostPutVars['addon_email']; 

$addon_email = $app->request->getParam('addon_email', null);

を変更することにより、それが動作するようになってきました。また、content-typeはx-www-form-urlencoded

0

すべてPOST/PUTパラメータの配列を取得するために$request->getParams()を使用すべきか、'key'がPARAMTER名で、'defaultValue'が良く、ケースパラメータのデフォルト値が欠落している...ある$reqeuest->getParam('key', 'defaultValue')を、使用することができます。

だから、私たちの両方を使用すると、レスポンスオブジェクトを返す必要があることを忘れてしまった

function add_email_address($request, $response, $args) { 

    $email = $args['email']; 
    $addon_email = $app->request->getParam('addon_email', null); 

    // some code.... 

    return $response->withJson("ADD/UPDATE $email with $email"); 

} 

EDIT

。 )

add_email_addressはルートコールバックなので、Psr\Http\Message\ResponseInterfaceという応答が返されます。

+0

に設定する必要がありますが、今回は 'use($ app)'宣言でエラー500となっています。私は 'use($ app)'と '$ addon_email = $ app-> request-> getParam( 'addon_email'、null);を削除しました;まだ500を返します – JackTheKnife

+0

古いコードを混ぜたようにOPを更新しましたv2ではv3では動作しなくなりました。今は200 OKですが、ポスト値はありません。 – JackTheKnife

+0

設定で 'displayErrorDetails'が' true'に設定されていますか?あなたが持っていない場合は、[こちらはどうやっていますか](http://www.slimframework.com/docs/handlers/error.html)。 –

関連する問題