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

时间:2012-11-26 12:52:07

标签: php yii

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

THX,

3 个答案:

答案 0 :(得分:0)

生成的默认yiic yii webapp在 project / protected / components / Controller.php 中有一个Controller类,app中的所有控制器都从该Controller继承。

该课程是添加beforeAction的理想之地。

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

答案 1 :(得分:0)

您需要在组件目录中创建BaseController.php。在这个文件中,你将从CController继承你的BaseController。在那里写你的beforeAction。在此之后,您将需要从BaseController继承所有控制器。

答案 2 :(得分:0)

1)使用CController扩展创建公共父控制器(例如SomeController)

2)在此Controller中的beforeAction()中注册脚本(示例SomeController)

3)扩展SiteController或模块控制器的这个控制器。

<?php

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


class SiteController extends SomeController
{
    // public function actionIndex
}