如何在Yii中的所有页面请求中触发方法?

时间:2014-07-28 05:12:06

标签: methods yii controller

在我网站的标题部分,我想展示新消息。我有一个方法来获取新方法并返回它们。问题是标题部分在layout部分,我不想在所有控制器中重复一个方法。

如何通过不将方法复制到我的所有控制器来实现这一目的?我想在每个页面请求上触发newMessages()方法,以便为登录用户收集新消息。如何以正确的方式做到这一点?

2 个答案:

答案 0 :(得分:1)

在你的控制器中覆盖oOntroller类函数beforeAction()

protected function beforeAction($event)
{
    $someResult = doSomething()
    if ($someResult == $someValue)
    {
        return true;         
    }
    else
    {
        return true;         
    }
}

返回值可用于停止请求死机。因此,如果它返回false,则不调用控制器操作,反之亦然()。

参考文献:http://www.yiiframework.com/doc/api/1.1/CController#beforeAction-detail

答案 1 :(得分:0)

您可以在另一个控制器操作中使用导入控制器。类似下面的内容

class AnotherController extends Controller
{
    public function actionIndex()
    {
            Yii::import('application.controllers.admin.YourController'); // YourController is another controller in admin controller folder
            echo YourController::test(); // test is action in YourController
     }
 }