2017-04-27 27 views
0

Yii2、基本テンプレート、バージョン管理。 トークンを返すメソッドを作成しようとしています。Yii2 REST。 actionIndexへの投稿要求の送信方法

私TokenControllerがあります:

class TokenController extends Controller 
{ 
public function actionIndex() 
    { 
     $model = new LoginForm(); 
     $model->load(Yii::$app->request->bodyParams, ''); 
     if ($token = $model->auth()) { 
      return $token; 
     } else { 
      return $model; 
     } 
    } 
} 

と設定:

'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'showScriptName' => false, 
      'enableStrictParsing' => true, 
      'rules' => [ 
       ''=>'site/index', 
      [ 
        'class' => 'yii\rest\UrlRule', 
        'pluralize' => false, 
        'controller' => [ 
         'v1/token' 
        ], 
        'extraPatterns' => [ 
         'GET <action>'=>'<action>', 
         'POST <action>'=>'<action>', 
        ], 

       ], 

私はapi.site.ru/v1/tokenサーバーが返すにpostリクエストを送信する場合: enter image description here

と全く同じ方法actionLoginサーバー用返品: enter image description here

答えて

2

デフォルトでは、POSTパターンは、createアクションに誘導するルールを作成します。このため、Yiiはコントローラでcreateアクションを見つけようとしています。詳細は、hereを参照してください。

私はそれをテストしていませんが、indexメソッドの名前をcreateに変更するか、このようなデフォルトパターンを上書きする必要があります。

'patterns' => [ 
    'POST'=>'index', 
], 
+0

真剣に、 'actionIndex'ではなく' actionCreate'が動作します –

+0

うまくいきました。私はこのように動作する理由は、通常は 'POST'データが何かを作成しようとしていることです。あなたのユースケースに合っていない場合でも、その設定を上書きできるはずです –

関連する問題