cakePHP - 在执行任何控制器操作后可以调用的函数

时间:2016-01-14 11:31:33

标签: php cakephp callback

我需要一个可以在任何控制器方法执行后调用的函数。

例如,在执行任何控制器操作之前,始终会调用App控制器中的beforeFilter(),同样我需要afterFilter()之类的内容。

afterFilter()的问题是在控制器操作之前执行。

我有一个控制器名称TestController和一个操作test(),其代码如下:

TestController.php

function test() {
    echo 'test';exit;
}

afterFilter()内,我把这段代码写成:

AppController.php

function afterFilter() {
    echo 'afterfilter';exit;
}

然后只执行afterFilter()

评论上述内容如下:

function afterFilter() {
    //echo 'afterfilter';exit;
}

TestController:test()执行。因此在控制器方法之前调用afterFilter()。我需要一个在它之后调用的函数,而不管控制器名称或动作名称。

3 个答案:

答案 0 :(得分:2)

根据docs

  

Controller::afterFilter()

     

在每个控制器操作后调用,并在渲染完成后调用。这是最后一个运行的控制器方法。

您的AppController::afterFilter()回调按预期工作。您可能认为它在TestController::test()之前被调用,因为您无法在浏览器上看到任何输出。

试试这个:

function afterFilter() {
    echo 'afterfilter';
    echo $this->response;
    exit();
}

答案 1 :(得分:0)

我认为你要搜索的是dispatch filters

答案 2 :(得分:0)

我在php中找到了register_shutdown_function()。这就是诀窍。