В Yii2 не отрабатывает часть verbs в REST
уважаемые гуру.
Есть следующий код:
<?php
namespace app\api\modules\v1\controllers;
use Yii;
use yii\helpers\ArrayHelper;
use yii\filters\VerbFilter;
use yii\filters\auth\HttpBearerAuth;
use yii\rest\Controller;
use yii\web\Response;
class UserController extends Controller
{
public function init()
{
parent::init();
\Yii::$app->user->enableSession = false;
}
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['contentNegotiator']['formats']['text/html'] = Response::FORMAT_JSON;
$behaviors['authenticator'] = [
'class' => HttpBearerAuth::className(),
];
$behaviors['verbs'] = [
'class' => VerbFilter::className(),
'actions' => [
'index' => ['GET'],
'logout' => ['POST'],
],
];
return $behaviors;
}
public function actionIndex(){
if (Yii::$app->user->isGuest){
return ['result'=>'fail', 'access_token'=>null];
}else{
return ['result'=>'success', 'access_token'=>'this-token'];
}
}
public function actionCreate(){
$post = Yii::$app->request->post();
return ['action'=>'create', 'post'=>$post];
}
public function actionLogout(){
$header = Yii::$app->request->headers;
return $header;
}
}
Исходя из вышесказанного: у меня есть два Action 'index' => ['GET'] и 'logout' => ['POST'], если отправлять GET - все нормально.
Проблема заключается в том, что если идет POST то отрабатывает не actionLogout() а actionCreate().
Как тогда мне в контроллере создать собственные Action и сделать адекватную их работу? Контроллер расширял именно от yii\rest\Controller ради того, чтобы прописать все вручную, а не использовать "то что дали"
В urlManager не отправлять, поскольку из логики приложения, поведения проще прописать в контроллере, либо модуле.
Мой 'urlManager':
'urlManager' => [
'enablePrettyUrl' => true,
'enableStrictParsing' => true,
'showScriptName' => false,
'cache'=>null,
'rules' => [
['class' => 'yii\rest\UrlRule',
'controller' => [
'v1/user',
'v1/auth',
],
'pluralize' => false, //множественное число отключаем User->Users
],
],
],