symfonyob娱乐下载 1.2新增功能:自定义Web调试工具栏
symfob娱乐下载ony web调试工具栏是开发人员最好的朋友之一。在使用开发环境时,总是可以在浏览器中方便地访问它。它为您提供了有关当前页面的所有信息,并简化了应用程序的调试。到目前为止,这个工具栏中可用的所有信息都是硬编码的。但是从symfonyob娱乐下载 1.2开始,web调试工具栏是完全可配置的。
web调试工具栏
没有任何配置,默认工具栏看起来是这样的:
工具栏由面板组成。每个面板由一个标题和一个可选的面板内容组成,面板由一个PHP对象表示。默认情况下,有七个面板:
的名字 | 类名 | 表示 |
---|---|---|
ob娱乐下载symfony的版本 | sfWebDebugPanelob娱乐下载SymfonyVersion |
|
缓存信息 | sfWebDebugPanelCache |
|
配置 | sfWebDebugPanelConfig |
|
日志 | sfWebDebugPanelLogs |
|
数据库信息 | sfWebDebugPanelDatabase |
|
内存使用情况 | sfWebDebugPanelMemory |
|
计时器 | sfWebDebugPanelTimer |
自定义工具栏
方法来自定义web调试工具栏debug.web.load_panels
事件在应用程序或项目配置文件中。下面的代码向您展示了如何在前端配置类中侦听此事件:
<?php类frontendConfiguration扩展sfApplicationConfiguration{公共函数配置(){/ /……这个美元->调度程序->连接(“debug.web.load_panels”,数组(这个美元,“configureWebDebugToolbar”));}}
配置完成后,symfony将自动调用ob娱乐下载configureWebDebugToolbar ()
方法初始化web调试工具栏时使用。然后,此方法可以删除、替换或添加面板。
对于每一个听众,symfony调用ob娱乐下载configureWebDebugToolbar ()
方法,并将事件作为参数。事件的主题是我们想要操作的web调试工具栏对象:
<?php类frontendConfiguration扩展sfApplicationConfiguration{公共函数配置(){这个美元->调度程序->连接(“debug.web.load_panels”,数组(这个美元,“configureWebDebugToolbar”));}公共函数configureWebDebugToolbar(sfEvent美元的事件){webDebugToolbar美元=美元的事件->getSubject();}}
拆卸面板
若要删除面板,请调用removePanel ()
方法,使用面板的名称,如下所示:
<?php类frontendConfiguration扩展sfApplicationConfiguration{/ /……公共函数configureWebDebugToolbar(sfEvent美元的事件){webDebugToolbar美元=美元的事件->getSubject();webDebugToolbar美元->removePanel(“记忆”);}}
更换或增加面板
要更换面板,请调用setPanel ()
方法。
要创建一个面板,调用相同的方法setPanel ()
方法,但给它一个唯一的新名称。
当然,您可以扩展现有的面板类来添加或删除一些信息,但为了示例的需要,让我们创建一个全新的面板,显示在响应对象中注册的JavaScript和样式表文件:
<?php类frontendConfiguration扩展sfApplicationConfiguration{/ /……公共函数configureWebDebugToolbar(sfEvent美元的事件){webDebugToolbar美元=美元的事件->getSubject();webDebugToolbar美元->setPanel(“资产”,新sfWebDebugPanelAssets(webDebugToolbar美元));}}
我们需要创建sfWebDebugPanelAssets
类。所有面板类都必须扩展sfWebDebugPanel
并至少实现以下三个抽象方法:
getTitle ()
:返回web调试工具栏上显示的HTML。如果它返回零
,该面板将不会显示。getPanelContent ()
:返回面板的HTML表示形式。如果它返回零
,标题将不可点击。getPanelTitle ()
:显示面板时返回面板的标题。
有了这些信息,这里是最简单的面板可能工作:
<?php类sfWebDebugPanelAssets扩展sfWebDebugPanel{公共函数getTitle(){返回“资产”;}公共函数getPanelTitle(){返回样式表和JavaScript文件从sfWebResponse;}公共函数getPanelContent(){返回零;}}
它将在web调试工具栏中显示一个新的“资产”条目,但由于面板内容为空,文本是不可点击的。
让我们通过向面板添加一些内容来让它变得更有趣。响应对象有两个方法,getJavascripts ()
而且getStylesheets ()
,这些方法返回由响应对象包含的JavaScript和样式表文件组成的数组。
的getPanelContent ()
method遍历这两个数组来构造面板内容,并将其作为HTML字符串返回:
<?php类sfWebDebugPanelAssets扩展sfWebDebugPanel{/ /……公共函数getPanelContent(){美元的反应= sfContext::getInstance()->getResponse();美元的html='';如果(美元的样式表=美元的反应->getStylesheets()){美元的html=。' < h2 >样式表< / h2 > < ul > ';foreach(美元的样式表作为美元的文件= >选择美元){美元的html=。sprintf(李' < > <强> % s < /强> % s < /李>”, stylesheet_path(美元的文件),数(选择美元)?“(”.var_export(选择美元,真正的).“)”:'');;}美元的html=。“< / ul >”;}如果(美元的javascript=美元的反应->getJavascripts()){美元的html=。' < h2 > Javascripts < / h2 > < ul > ';foreach(美元的javascript作为美元的文件= >选择美元){美元的html=。sprintf(李' < > <强> % s < /强> % s < /李>”, javascript_path(美元的文件),数(选择美元)?“(”.var_export(选择美元,真正的).“)”:'');;}美元的html=。“< / ul >”;}返回美元的html;}}
下面是symfony页面上的结果:ob娱乐下载
将面板打包为插件
您甚至可以打包您的新面板并将它们作为ob娱乐下载symfony插件.
当一个用户安装你的插件时,你可以要求他改变他的配置类来添加事件监听器,就像我们之前做的那样,但是你也可以连接到web.debug.load_panels
事件config。
文件如下:
<?php/ /……require_once“/道路/ / sfWebDebugPanelAssets”;这个美元->调度程序->连接(“debug.web.load_panels”,数组(“sfWebDebugPanelAssets”,“listenToAddPanelEvent”));
然后,添加listenToAddPanelEvent ()
方法sfWebDebugPanelAssets
类:
类sfWebDebugPanelAssets扩展sfWebDebugPanel{静态公共函数listenToAddPanelEvent(sfEvent美元的事件){美元的事件->getSubject()->setPanel(“资产”,新sfWebDebugPanelAssets(美元的事件->getSubject()));}}
这样,您的面板将自动添加到web调试工具栏,而无需开发人员进行任何更改。
这就是它的全部。多亏了新的web.debug.load_panels
事件,您可以自由地自定义web调试工具栏您想要的方式。如果您想了解更多信息或了解更多技巧,可以浏览代码中的内置的面板.
和往常一样,本教程可以从食谱.
评论
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
数据库信息:sfWebDebugPanelPropel
timer: sfWebDebugPanelTimer
但是,MVC实现呢?对于一个类来说,html太多了……
我只是想扩展现有的面板。在这种情况下,MVC实现将非常有用……
但是好吧,你是对的,它只是一个调试工具栏…
我们期待symfony 1.2。ob娱乐下载