我对基于sfWebDebugPanel *使用的相同代码构建页面统计信息感兴趣。问题是当我在过滤器预执行中使用它时,我无法获得SQL查询的计数因为到目前为止没有运行(操作及其后续模型调用尚未执行)
所以当我将我的过滤器添加到过滤器的末尾时,它似乎根本就没有运行。它看起来像:
rendering: ~
security: ~
cache: ~
execution: ~
statistics:
class: myStatistics
然而这有效:
rendering: ~
security: ~
cache: ~
statistics:
class: myStatistics
execution: ~
但不返回SQL查询。有什么建议吗?
答案 0 :(得分:1)
我手边没有任何绘图工具,但您必须将渲染视为双向街道......首先调用rendering
过滤器。这样做“有些东西”,然后调用执行security
过滤器的函数。在此过滤器中,您的授权被检查,如果不正确,则转发请求并再次调用过滤器堆栈,如果授权正常,则调用链中的下一个过滤器。如果页面有效,则缓存过滤器从堆栈返回页面,否则运行执行过滤器。
然后,当执行过滤器运行时,缓存过滤器(称为执行过滤器)现在具有实时执行数据,并将其存储到缓存中,然后为后一部分运行安全过滤器等...
因此,典型的过滤器实现如下所示:
public function execute($filterChain)
{
doSomething();
// Code that is called before execution.
// Runs all down stream filters
$filterChain->execute();
doSomethingElse();
// Code that is called after execution.
}
所以你想在执行之后,在doSomethingElse()
部分。