2017-04-13 2 views
0

残りのyii2に投稿要求を書き直す必要があります。 url v1/availabilityでリクエストを投稿するたびに 私は管理リクエストに対してactionCreateを呼び出したいと思います。残りのPOSTメソッドを書き換えるyii2

これは私が

public function actions() 
    { 
     $actions = parent::actions(); 
     unset($actions['view']); 
     return array_merge(
      $actions, 
      [ 
       'index' => [ 
        'class' => 'yii\rest\IndexAction', 
        'modelClass' => $this->modelClass, 
        'checkAccess' => [$this, 'checkAccess'], 
        'prepareDataProvider' => [$this, 'index'] 
       ], 
      ] 
     ); 
    } 

public function actionCreate(){ 
     throw new \yii\web\HttpException(200, 'IT WORKS!', 200); 
    } 

任意のアイデアをしましたV1 /コントローラ/ AvailabilityController.php で

'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'enableStrictParsing' => true, 
      'showScriptName' => false, 
      'rules' => [ 
       [ 
        'class' => 'yii\rest\UrlRule', 
        'controller' => ['v1/availability'], 
        'pluralize' => true, 
        'extraPatterns' => [ 
         'POST v1/availability' => 'v1/availability/create' 
        ] 
       ], 
       'OPTIONS v1/user/login' => 'v1/user/login', 
       'POST v1/user/login' => 'v1/user/login', 
       'POST v2/user/login' => 'v2/user/login', 
       'OPTIONS v2/user/login' => 'v2/user/login', 
      ], 
     ], 

私のmain.phpのですか?

答えて

1

下記のようにURLルールを追加します。

'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'enableStrictParsing' => true, 
      'showScriptName' => false, 
      'rules' => [ 
       [ 
        'class' => 'yii\rest\UrlRule', 
        'controller' => ['v1/availability'] 
       ], 
       'POST v1/availability' => 'v1/availability/create', 
       'OPTIONS v1/user/login' => 'v1/user/login', 
       'POST v1/user/login' => 'v1/user/login', 
       'POST v2/user/login' => 'v2/user/login', 
       'OPTIONS v2/user/login' => 'v2/user/login', 
      ], 
     ], 

ここであなたはYiiのルールを理解する必要があります。あなたが以下のような1つのルールを追加した場合。

['class' => 'yii\rest\UrlRule', 'controller' => 'user'], 

このオープンしているクライアント用の多数のURL。

[ 
    'PUT,PATCH users/<id>' => 'user/update', 
    'DELETE users/<id>' => 'user/delete', 
    'GET,HEAD users/<id>' => 'user/view', 
    'POST users' => 'user/create', 
    'GET,HEAD users' => 'user/index', 
    'users/<id>' => 'user/options', 
    'users' => 'user/options', 
] 

上記のURLはすべてクライアント用に開かれます。

0

だから... 投稿を上書きする方法が2つあります。

最初の@Irfan Aliメソッド このメソッドでは、main.phpで単一呼び出しを宣言し、コントローラ内の単一の関数で処理することができます。

第2の方法はmain.phpで であるあなたは、コントローラ

public function createAction($id){ 
    throw new \yii\web\HttpException(200, 'You receive post or put', 200); 
} 

でオーバーライドしなければなりませんし、呼び出した場合、この機能では、あなたがインターセプトしなければならないインターセプトPOSTメソッドの可用性

'urlManager' => [ 
     'enablePrettyUrl' => true, 
     'enableStrictParsing' => true, 
     'showScriptName' => false, 
     'rules' => [ 
      [ 
       'class' => 'yii\rest\UrlRule', 
       'controller' => ['v1/availability'], 
       'pluralize' => true, 
      ], 
     ], 
    ], 

への一般的な呼び出しを宣言しますあなたは何でもしている投稿です。

私は最初の方法が大好きです!

関連する問題