【问题标题】:Why beforeRender() is called two times?为什么 beforeRender() 被调用了两次?
【发布时间】:2012-12-14 23:40:58
【问题描述】:

我正在使用 CakePHP 2.2.0 并且我有这个 AppController:

<?php
    App::uses('Controller', 'Controller');

    class AppController extends Controller {
        public function beforeRender(){
           debug('test');
        }
    }
?>

还有这个简单的自定义控制器:

<?php

App::uses('AppController', 'Controller');

class ProvidersController extends AppController {

    public function index(){
        debug('index');
    }

}

?>

我真的不明白为什么 AppController 的 beforeRender 被调用了两次......我在调试模式下看到两个“测试”字符串,当 URL 到达 ProvidersController 的 index() 方法时。

谁能解释一下?

【问题讨论】:

  • 不知道为什么,你可以在 beforeRender 中尝试debug_print_backtrace() 看看是什么调用它..
  • 有人建议 beforeRender 为布局触发一次,为$content_for_layout (视图)触发一次;也许就是这样。

标签: php cakephp


【解决方案1】:

当我在代码的其他地方有一个损坏的 src 时,我已经看到了这种行为。例如,如果找不到 javascript 文件,cake 将启动,导致逻辑再次运行。这或许可以解释为什么您会看到像 beforeRender() 这样的方法运行两次。

【讨论】:

    猜你喜欢
    • 2013-11-20
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 2012-08-02
    相关资源
    最近更新 更多