2017-04-21 6 views
0

コントローラのアクションから別のコントローラのアクションにPOSTリクエストを送信したいと思います。宛先コントローラのアクションでは、私はYii::$app->request->post() のようにPOSTデータにアクセスしています。私の必要に応じて、この変数を別のコントローラから変更したいと考えています。POSTを介してコントローラアクションから別のコントローラアクションにデータを渡す方法

私は$ _GETを使用したくない、またはYiiと同等のものを使用したくないことに注意してください。

+0

このアプローチは、私には何らかの汚れているようです。 Antoherの方法は、コントローラから機能を抽出して、サービスに投稿したいということです。次に、両方のコントローラでこのサービスを使用して変数を変更することができます。 – jiGL

+0

私はあなたが上記を達成するためにajaxを使用しなければならないと思います –

答えて

0

私はコメントでそれを書いたように、これは私れる好ましいアプローチであるwould'ntが、そのための機能があります:

Yii::$app->runAction('yourController/yourAction', [$yourParameters]); 
+0

$ yourParametersのパラメータはPOST経由で送信されないと思います。それらはGETパラメータとして送信されます。 POST変数 –

+0

を送信して、あなたの望むアクションにカールリクエストを送る必要があります。 しかし、男...これは本当に難しいものです:D – jiGL

+0

パラメータなしrunActionアプローチで試してみてください!あなたは新しいリクエストを作成していないので、 "Yii :: $ app-> request"のPOST変数も2番目のコントローラで利用できるはずです! – jiGL

0

はこれを試してみてください:

<?= Html::a('Link Text', ['controller/action'], [ 
    'data'=>[ 
     'method' => 'post', 
     'confirm' => 'Are you sure you want to submit this?', 
     'params'=>['id' => 21, 'val2' => true], 
    ] 
]) ?> 

は、それに応じて値を調整。 confirmはオプションです。ユーザーの操作を確認しない場合は、削除します。

+0

これはビューファイルで行うことができます。ここでの状況は、コントローラがレンダリングするビューファイルがあることです。データがコントローラに送信されるフォームがあります。このコントローラ#1では、いくつかのアクションを実行し、$ _POST変数にいくつかのパラメータを追加し、次にコントローラ#2を呼び出すと、この更新された$ _POSTを使用していくつかの他のアクションを実行します。 –

関連する問題