2016-12-22 3 views
0

Rest APIでGETメソッドを実装しようとしました。Rest ActiveControllerのidを持つアクションのカスタムアクションYii2

'urlManager' => [ 
'enablePrettyUrl'  => true, 
'enableStrictParsing' => true, 
'showScriptName'  => false, 
'rules'    => [ 
    [ 
     'class'  => 'yii\rest\UrlRule', 
     'controller' => [ 
      'v1/user' 
     ], 
     'extraPatterns' => [ 
      'GET status' => 'status', 
     ], 
     'tokens'  => [ 
      '{id}' => '<id:\\w+>' 
     ], 
    ], 
], 

ユーザーモデル::

をユーザー/ GET:だから私は持っている設定では、ユーザID#1の状態が呼ぶだろう/ユーザー/ 1 /ステータス

をID /ステータス

を取得

namespace api\modules\v1\models; 

use \yii\db\ActiveRecord; 

class User extends ActiveRecord { 
    /** 
    * @inheritdoc 
    */ 
    public static function tableName() { 
     return 'user'; 
    } 

    /** 
    * @inheritdoc 
    */ 
    public static function primaryKey() { 
     return [ 'id' ]; 
    } 

} 

ユーザーコントローラー:

namespace api\modules\v1\controllers; 

use yii\rest\ActiveController; 

class UserController extends ActiveController { 

    public $modelClass = 'api\modules\v1\models\User'; 

    public function actions() { 
     $actions = parent::actions(); 

     unset(
      $actions[ 'index' ], 
      $actions[ 'view' ], 
      $actions[ 'create' ], 
      $actions[ 'update' ], 
      $actions[ 'delete' ], 
      $actions[ 'options' ] 
     ); 


     return $actions; 
    } 

    protected function verbs() { 
     return [ 
      'status' => [ 'GET' ], 
     ]; 
    } 

    public function actionStatus($id) { 

     return 1; 
    } 

} 

しかし、今私は実際に呼び出しのためのデータを返す方法についてはよく分かりません。

+0

ワットあなたは実際にデータを返す方法についてよく分かりません。 –

+0

actionStatus内でクエリを実行してJSONを返しますか? actionStatusで何を続けるべきかわからない – keeg

答えて

1
$user = User::findOne($id); 
if ($user) 
    return Json::encode(['success'=>true, 'data'=>$user->status]); 
else 
    return Json::encode(['success'=>false, 'message'=>"Can't find user"]); 
関連する問題