2016-11-04 12 views
2

私のコントローラにログインアクションを追加したいのですが、私にページが見つかりませんでした。 このような投稿がたくさんあることは知っていますが、誰も私をまだ助けてくれていません。私のコントローラのyii2のyii rest activecontroller拡張コントローラにカスタムアクションを追加する方法は?

コード:設定/ web.phpから

<?php 
// controller for rest apis 
namespace app\controllers; 
use yii\rest\ActiveController; 
use yii\rest\Controller; 
use yii\web\Response; 
//use yii\web\Controller; 
use app\models\UserMaster; 

//class UserController extends Controller 
class UserController extends ActiveController 
{ 
    public $modelClass = 'app\models\UserMaster'; 
    public $pluralize = false; 
    public function behaviors() 
    { 
     $behaviors = parent::behaviors(); 
     $behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON; 
     return $behaviors; 
    } 
    public function actionLogin(){ 
     return UserMaster::find()->all(); 
    } 
    public function login(){ 
     return UserMaster::find()->all(); 
    }  
} 
?> 

コード:UserController.phpその後

<?php 
namespace app\models; 

use Yii; 
use yii\db\ActiveRecord; 

/** 
* My UserMaster model 
*/ 
class UserMaster extends ActiveRecord 
{ 

    public static function tableName() 
    { 
     return 'user_master'; // the name of the table 
    } 

    // other code ... 
} 

'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'class'=>'yii\web\UrlManager', 
      'showScriptName' => false, 

      //for specifying rest api model to be used 
      //and by pluralize=false we can use with singular name rather than plural as default (users) 
      'enableStrictParsing' => true, 
      'rules' => [ 
       [ 
       'class' => 'yii\rest\UrlRule', 
       'controller' => 'user', 
       'pluralize'=>false, 
       'extraPatterns' => [ 
        'GET /user/login/' => 'login', // 'xxxxx' refers to 'actionXxxxx' 
        ], 
       ] 
      ], 
     ], 
+0

なぜあなたは$ behaviors ['authenticator']を使って認証をしませんか?あなたはそれについて知っていますか? – yafater

+0

「GET/user/login /」をextraPatternsの「GETログイン」に変更するだけです。 (これで/ user/user/loginから取得しようとしています) – karpy47

答えて

1

はのは、右のモデルから始めましょう次のようになります。

<?php 
namespace app\controllers; 

use Yii; 
use yii\rest\ActiveController; 
use app\models\userMaster; 

/** 
* My User controller 
*/ 
class UserController extends ActiveController 
{ 
    // define the model class 
    public $modelClass = 'app\models\UserMaster'; 

    // add a serializer to make front-end development easier 
    // public $serializer = [ 
    //  'class' => 'yii\rest\Serializer', 
    //  'collectionEnvelope' => 'items', 
    // ]; 

    // the login action 
    public function actionLogin() 
    { 
     return UserMaster::find()->all(); 
    } 
} 

私たちは、その後のような私たちのurlManagerを設定:

'urlManager' => [ 
    'enablePrettyUrl' => true, 
    'enableStrictParsing' => false, 
    'showScriptName' => false, 
    'rules' => [ 

     [ 
      'class' => 'yii\rest\UrlRule', 
      'controller' => 'user', 
      // 'pluralize' => false 
      'extraPatterns' => [ 
       'GET login' => 'login', 
       // other patterns 
      ] 
     ], 

    ], 
], 

は、今、私たちはURI GET /users/loginを訪問し、当社のログインを利用することができます。もっと詳しくはYii2 REST Quick Start

関連する問題