在yii\rest\ActiveController.php中
public function actions()
{
return [
'index' => [
'class' => 'yii\rest\IndexAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
],
'view' => [
'class' => 'yii\rest\ViewAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
],
'create' => [
'class' => 'yii\rest\CreateAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
'scenario' => $this->createScenario,
],
'update' => [
'class' => 'yii\rest\UpdateAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
'scenario' => $this->updateScenario,
],
'delete' => [
'class' => 'yii\rest\DeleteAction',
'modelClass' => $this->modelClass,
'checkAccess' => [$this, 'checkAccess'],
],
'options' => [
'class' => 'yii\rest\OptionsAction',
],
];
}
这是默认的接口方法,那么如何重写呢?namespace api\modules\v1\controllers;
use Yii;
use yii\rest\ActiveController;
use yii\data\ActiveDataProvider;
use api\models\Order;
class UsersController extends ActiveController {
public $modelClass = 'api\modules\v1\models\User';
public function actions() {
$actions = parent::actions();
// 禁用""index,delete" 和 "create" 操作
unset($actions['index'],$actions['delete'], $actions['create']);
return $actions;
}
//重写index的业务实现
public function actionIndex()
{
$modelClass = $this->modelClass;
return new ActiveDataProvider([
'query' => $modelClass::find()->asArray(),
'pagination' => false
]);
}
}
a)因为访问的时候先去执行actions方法里面的对应独立操作,如果找不到再去找对应的内联操作。'urlManager' => [
'enablePrettyUrl' => true,
'showScriptName' => false,
'rules' => [
[
'class' => 'yii\rest\UrlRule',
'controller' => ['v1/users'],
'pluralize' => false,
'extraPatterns' => [
'GET versions' => 'version',
'GET search/' => 'search',
'POST newusers' => 'add'
],
],
],
],
"extraPatterns"这个属性是额外模式配置b)'GET searches/
我们只需要在控制器中实现这些方法,完成相应的逻辑业务,那么各个需要的接口就完成了。
友情推荐
本人已开源基于swoole扩展实现的轻量级框架
https://github.com/bingcool/swoolefy