请求最终到达的还是action,yii2 中的 action 有两种形式:
- 控制器中的action
- 独立的action
控制器中的action
需要以action为前缀,如 actionIndex
<?php
class SiteController extends Controller
{
public function actionHome()
{
return $this->render('home');
}
}
独立action
在 service 文件夹下新建 actions 目录,而后新建一个 DemoAction.php
<?php
namespace service\actions;
use yii\base\Action;
class DemoAction extends Action
{
// 入口
public function run ()
{
// 调用当前控制器
return $this->controller->render('index');
}
}
在 controller 中使用 action
<?php
class SiteController extends Controller
{
public function actions()
{
return [
// 可以用 site/demo访问
'demo' => 'service\actions\DemoAction'
];
}
}
独立action,常用于前后端有一样功能的时候,通过 APP_ID 做区别,就可以使得前后端公用一个 action
默认action
yii2 中 一个控制器的默认 action 为 index,修改此设置为 home
<?php
class SiteController extends Controller
{
public $defaultAction = 'home';
public function actionHome()
{
return $this->render('home');
}
}