我想在 beforeAction 方法(Yii 框架)中注册一个脚本。但我不想在每个控制器中重复该方法,所以我的问题是如何创建一个所有控制器都将继承的 beforeAction()?
谢谢,
默认 yiic 生成的 yii webapp 在project/protected/components/Controller.php中有一个 Controller 类,应用中的所有控制器都继承自这个 Controller。
该类是添加beforeAction
.
编辑:如果你没有使用 yiic 并且没有这个默认的 Controller 类,可以添加一个从 CController 扩展的新类,然后让你的控制器从这个新类扩展。您可以将控制器的所有通用功能保留在此父控制器类中。
您需要在 components 目录中创建 BaseController.php。在这个文件中,您将从 CController 继承您的 BaseController。在那里写下你的 beforeAction。在此之后,您将需要从 BaseController 继承所有控制器。
1) 创建带有 CController 扩展的通用父控制器(例如 SomeController)
2)在这个Controller的beforeAction()中注册脚本(例如SomeController)
3)扩展您的站点控制器或模块控制器的这个控制器。
<?php
class SomeController extends CController
{
public function beforeAction()
{
// Your Register Script
}
}
class SiteController extends SomeController
{
// public function actionIndex
}