独立动作 ¶
如果动作足够通用,把它实现在一个单独类中有助于代码复用。创建 actions/Page.php
namespace app\actions;
class Page extends \yii\base\Action
{
public $view = 'index';
public function run()
{
return $this->controller->render($this->view);
}
}
下面的代码偏简单,不过还是可以说明独立动作是如何工作的。独立动作可以在控制器中使用如下:
class SiteController extends \yii\web\Controller
{
public function actions()
{
return [
'about' => [
'class' => 'app\actions\Page',
'view' => 'about',
],
];
}
}
接下来你就可以通过URL http://example.com/?r=site/about 来访问这个动作。
捕获所有请求 ¶
有时候需要在单个控制器动作中处理所有请求。比如当网站处于维护状态时显示一个提示信息。要这样做,你应该动态的或者通过应用程序配置来设置web应用的 catchAll 属性:
return [
'id' => 'basic',
'basePath' => dirname(__DIR__),
// ...
'catchAll' => [ // <-- here
'offline/notice',
'param1' => 'value1',
'param2' => 'value2',
],
]
上述代码中的 offline/notice 指向 OfflineController::actionNotice()。 param1 和 param2是传入动作方法的参数。
234

被折叠的 条评论
为什么被折叠?



