我使用的是symfony2,它的調試工具欄非常棒。如何禁用一些symfony2調試工具欄元素?
但是,我已經安裝了som extra bundles,它添加了一些元素,現在顯示在兩個級別上。
如何從工具欄中刪除一些元素?
舉例來說,我並不需要信息關於我的phpversion,不是路線等
我使用的是symfony2,它的調試工具欄非常棒。如何禁用一些symfony2調試工具欄元素?
但是,我已經安裝了som extra bundles,它添加了一些元素,現在顯示在兩個級別上。
如何從工具欄中刪除一些元素?
舉例來說,我並不需要信息關於我的phpversion,不是路線等
工具欄中的元素稱爲DataCollectors
,它們被用data_collector
特殊服務。在以下幾行中,我將以Time Datacollector
爲例。
因此,要停用其中一個,您首先必須獲取其服務ID。
php console container:debug --show-private --tag='data_collector'
輸出是: 您可以通過運行控制檯命令列出所有DataCollectors
[container] Public and private services with tag data_collector
Service ID template id priority Class name
9d48641ce55174a7d8ab08e99157426bc290884423a78a5821440d644f6a37df_5 @WebProfiler/Collector/time.html.twig time 300 Symfony\Component\HttpKernel\DataCollector\TimeDataCollector
所以,現在你有這time
服務的ID,你必須建立名字。添加data_collector.
作爲id的前綴以獲取名稱。服務的名稱是data_collector.time
。
現在,當你想停用它時,你必須給它一個零優先級。
在你config.yml:
services:
data_collector.time:
class: "%data_collector.time.class%"
tags:
- {name: 'data_collector', priority: '0'}
現在分析器不具備time
沒有更多。
這是一種無法正常使用某些分析器項目的方法。 (AKA:一個symfony的更新不會影響它,除非他們改變DataCollectors的名稱)
的shortiest方式是direcly把零優先vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml
<?xml version="1.0" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
<parameters>
<parameter key="data_collector.config.class">Symfony\Component\HttpKernel\DataCollector\ConfigDataCollector</parameter>
<parameter key="data_collector.request.class">Symfony\Component\HttpKernel\DataCollector\RequestDataCollector</parameter>
<parameter key="data_collector.exception.class">Symfony\Component\HttpKernel\DataCollector\ExceptionDataCollector</parameter>
<parameter key="data_collector.events.class">Symfony\Component\HttpKernel\DataCollector\EventDataCollector</parameter>
<parameter key="data_collector.logger.class">Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector</parameter>
<parameter key="data_collector.time.class">Symfony\Component\HttpKernel\DataCollector\TimeDataCollector</parameter>
<parameter key="data_collector.memory.class">Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector</parameter>
<parameter key="data_collector.router.class">Symfony\Bundle\FrameworkBundle\DataCollector\RouterDataCollector</parameter>
</parameters>
<services>
[...]
<service id="data_collector.time" class="%data_collector.time.class%" public="false">
<tag name="data_collector" template="@WebProfiler/Collector/time.html.twig" id="time" priority="0" />
<argument type="service" id="kernel" on-invalid="ignore" />
<argument type="service" id="debug.stopwatch" on-invalid="ignore" />
</service>
[..]
</services>
</container>
所有DataCollectors不在相同的文件中定義。但這裏是其中一些快速列表:
data_collector.config:
data_collector.request:
data_collector.router:
data_collector.security:
data_collector.logger:
data_collector.memory:
data_collector.exception:
data_collector.events:
swiftmailer.data_collector:
我有問題與PHP緩存。它有CacheDataCollector這可能在某些情況下崩潰的Symfony2 - https://github.com/php-cache/issues/issues/112 我試圖解決以上(含優先級0) - 它犯規工作,數據採集器仍然崩潰的Symfony2
我沒有任何想法,爲什麼優先= 0應該禁用任何東西。 你可以在 https://github.com/avorobiev/symfony2/blob/master/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/ProfilerPass.php
檢查的Symfony2 ProfilerPass自己,這過程標籤data_collector所以,我用很骯髒的補丁這一翻譯 - 在應用程序配置我想補充的服務具有相同的名稱,但沒有標籤data_collector。 像
services:
cache.data_collector:
class: Cache\CacheBundle\DataCollector\CacheDataCollector
更乾淨和更穩定的方式將被添加CompilerPass,這將刪除標記 - https://blog.liplex.de/disable-elements-in-the-symfony-developer-toolbar-with-compilerpass/