0

我正在尝试从 Yii 的子模块中注册事件。

它似乎不起作用。

init方法肯定被调用。

class TestModule extends CWebModule
{
    public function init()
    {
        $this->setImport(array(
            'test.models.*',
            'test.components.*',
        ));
        Yii::app()->onBeginRequest = array($this, 'onBeginRequest');
    }

    public function onBeginRequest($event) {
        die('Request!');
    }

    public function beforeControllerAction($controller, $action)
    {
        if (parent::beforeControllerAction($controller, $action))
        {
            return true;
        }
        else
            return false;
    }

}
4

2 回答 2

1

要注册活动,您可以:

$this->getEventHandlers($eventName)->add($eventHandler);

$eventHandler您要为事件定义的回调名称在哪里$eventName

您也可以通过以下方式进行操作:

$this->attachEventHandler($eventName, $eventHandler);
于 2013-02-18T13:22:51.593 回答
0

我自己解决了这个问题。

问题是,我实际上为 onBeginRequest 太晚了(请求已处理)。

所以我所做的是为 onBeginRequest 和 onEndRequest 编写一个带有事件处理程序的组件,在 config/main.php 中注册事件处理程序并从该组件调用我的模块。

我基本上不得不代理所有这些事件。

于 2013-03-08T12:36:58.300 回答