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