如何编写适用于所有控制器的 beforeAction()



我想在beforeAction方法(Yii Framework)中注册一个脚本。但我不想在每个控制器中重复该方法,所以我的问题是如何创建一个所有控制器都将继承的 beforeAction()?

感谢

默认的 yiic 生成的 yii webapp 在 project/protected/components/Controller.php 中有一个控制器类,并且应用程序中的所有控制器都继承自此控制器。

该类是添加beforeAction的理想场所。

编辑:如果您没有使用yiic并且没有这个默认的控制器类,则可以添加一个从CController扩展的新类,然后让您的控制器从这个新类扩展。您可以将控制器的所有通用功能保留在此父控制器类中。

您需要在组件目录中创建 BaseController.php。在此文件中,您将从 CController 继承您的 BaseController。在那里写下你的前行动。在此之后,您将需要从基本控制器继承所有控制器。

1)

创建带有 CController 扩展的通用父控制器(示例 SomeController)

2) 在此控制器的 beforeAction() 中注册脚本(例如 SomeController)

3) 扩展您的站点控制器或模块控制器的此控制器。

<?php
class SomeController extends CController
{
    public function beforeAction()
    {
        // Your Register Script
    }
}

class SiteController extends SomeController
{
    // public function actionIndex
}

最新更新