Преглед изворни кода

Refactored web profiler template definitions to make it easier for bundle developers to add their templates

H. Westphal пре 14 година
родитељ
комит
5b056b2b9a

+ 1 - 1
src/Symfony/Bundle/DoctrineBundle/Resources/config/dbal.xml

@@ -21,7 +21,7 @@
         </service>
 
         <service id="doctrine.data_collector" class="%doctrine.data_collector.class%">
-            <tag name="data_collector" />
+            <tag name="data_collector" template="DoctrineBundle:Collector:db" />
             <argument type="service" id="doctrine.dbal.logger" />
         </service>
     </services>

+ 1 - 1
src/Symfony/Bundle/DoctrineMongoDBBundle/Resources/config/mongodb.xml

@@ -76,7 +76,7 @@
       <argument type="service" id="logger" on-invalid="null" />
      </service>
     <service id="doctrine.odm.mongodb.data_collector" class="%doctrine.odm.mongodb.data_collector_class%">
-      <tag name="data_collector" />
+      <tag name="data_collector" template="DoctrineMongoDBBundle:Collector:mongodb" />
       <argument type="service" id="doctrine.odm.mongodb.logger" />
     </service>
 

+ 23 - 23
src/Symfony/Bundle/FrameworkBundle/Resources/config/collectors.xml

@@ -7,53 +7,53 @@
     <parameters>
         <parameter key="data_collector.config.class">Symfony\Bundle\FrameworkBundle\DataCollector\ConfigDataCollector</parameter>
         <parameter key="data_collector.request.class">Symfony\Bundle\FrameworkBundle\DataCollector\RequestDataCollector</parameter>
-        <parameter key="data_collector.timer.class">Symfony\Bundle\FrameworkBundle\DataCollector\TimerDataCollector</parameter>
-        <parameter key="data_collector.memory.class">Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector</parameter>
-        <parameter key="data_collector.logger.class">Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector</parameter>
+        <parameter key="data_collector.security.class">Symfony\Component\HttpKernel\DataCollector\SecurityDataCollector</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.security.class">Symfony\Component\HttpKernel\DataCollector\SecurityDataCollector</parameter>
+        <parameter key="data_collector.logger.class">Symfony\Component\HttpKernel\DataCollector\LoggerDataCollector</parameter>
+        <parameter key="data_collector.timer.class">Symfony\Bundle\FrameworkBundle\DataCollector\TimerDataCollector</parameter>
+        <parameter key="data_collector.memory.class">Symfony\Component\HttpKernel\DataCollector\MemoryDataCollector</parameter>
     </parameters>
 
     <services>
         <service id="data_collector.config" class="%data_collector.config.class%">
-            <tag name="data_collector" />
+            <tag name="data_collector" template="WebProfilerBundle:Collector:config" />
             <argument type="service" id="kernel" />
             <argument type="service" id="router" on-invalid="ignore" />
         </service>
 
         <service id="data_collector.request" class="%data_collector.request.class%">
-            <tag name="data_collector" />
-        </service>
-
-        <service id="data_collector.timer" class="%data_collector.timer.class%">
-            <tag name="data_collector" />
-            <argument type="service" id="kernel" />
-        </service>
-
-        <service id="data_collector.memory" class="%data_collector.memory.class%">
-            <tag name="data_collector" />
+            <tag name="data_collector" template="WebProfilerBundle:Collector:request" />
         </service>
 
-        <service id="data_collector.logger" class="%data_collector.logger.class%">
-            <tag name="data_collector" />
-            <argument type="service" id="logger" on-invalid="ignore" />
+        <service id="data_collector.security" class="%data_collector.security.class%">
+            <tag name="data_collector" template="WebProfilerBundle:Collector:security" />
+            <argument type="service" id="security.context" on-invalid="ignore" />
         </service>
 
         <service id="data_collector.exception" class="%data_collector.exception.class%">
-            <tag name="data_collector" />
+            <tag name="data_collector" template="WebProfilerBundle:Collector:exception" />
         </service>
 
         <service id="data_collector.events" class="%data_collector.events.class%">
-            <tag name="data_collector" />
+            <tag name="data_collector" template="WebProfilerBundle:Collector:events" />
             <call method="setEventDispatcher">
                 <argument type="service" id="event_dispatcher" />
             </call>
         </service>
 
-        <service id="data_collector.security" class="%data_collector.security.class%">
-            <tag name="data_collector" />
-            <argument type="service" id="security.context" on-invalid="ignore" />
+        <service id="data_collector.logger" class="%data_collector.logger.class%">
+            <tag name="data_collector" template="WebProfilerBundle:Collector:logger" />
+            <argument type="service" id="logger" on-invalid="ignore" />
+        </service>
+
+        <service id="data_collector.timer" class="%data_collector.timer.class%">
+            <tag name="data_collector" template="WebProfilerBundle:Collector:timer" />
+            <argument type="service" id="kernel" />
+        </service>
+
+        <service id="data_collector.memory" class="%data_collector.memory.class%">
+            <tag name="data_collector" template="WebProfilerBundle:Collector:memory" />
         </service>
     </services>
 </container>

+ 10 - 6
src/Symfony/Bundle/WebProfilerBundle/Controller/ProfilerController.php

@@ -241,13 +241,17 @@ class ProfilerController extends ContainerAware
     protected function getTemplateNames($profiler)
     {
         $templates = array();
-        foreach ($this->container->getParameter('data_collector.templates') as $name => $template) {
-            if ($profiler->has($name)) {
-                if (!$this->container->get('templating')->exists($template.'.twig')) {
-                    continue;
+        foreach ($this->container->findTaggedServiceIds('data_collector') as $id => $tags) {
+            if ($this->container->has($id) && isset($tags[0]['template'])) {
+                $name = $this->container->get($id)->getName();
+                $template = $tags[0]['template'];
+                if ($profiler->has($name)) {
+                    if (!$this->container->get('templating')->exists($template.'.twig')) {
+                        continue;
+                    }
+
+                    $templates[$name] = $template.'.twig';
                 }
-
-                $templates[$name] = $template.'.twig';
             }
         }
 

+ 0 - 8
src/Symfony/Bundle/WebProfilerBundle/DependencyInjection/WebProfilerExtension.php

@@ -42,10 +42,6 @@ class WebProfilerExtension extends Extension
     {
         $loader = new XmlFileLoader($container, __DIR__.'/../Resources/config');
 
-        if (!$container->hasParameter('data_collector.templates')) {
-            $loader->load('web_profiler.xml');
-        }
-
         if (isset($config['toolbar'])) {
             if ($config['toolbar']) {
                 if (!$container->hasDefinition('debug.toolbar')) {
@@ -62,10 +58,6 @@ class WebProfilerExtension extends Extension
                 $container->setParameter('debug.toolbar.intercept_redirects', (Boolean) $config[$key]);
             }
         }
-
-        if (isset($config['templates'])) {
-            $container->setParameter('data_collector.templates', array_merge($container->getParameter('data_collector.templates'), $config['templates']));
-        }
     }
 
     /**

+ 0 - 7
src/Symfony/Bundle/WebProfilerBundle/Resources/config/schema/webprofiler-1.0.xsd

@@ -8,14 +8,7 @@
     <xsd:element name="config" type="config" />
 
     <xsd:complexType name="config">
-        <xsd:sequence>
-            <xsd:element name="templates" type="templates" minOccurs="0" maxOccurs="1" />
-        </xsd:sequence>
         <xsd:attribute name="toolbar" type="xsd:boolean" />
         <xsd:attribute name="intercept-redirects" type="xsd:boolean" />
     </xsd:complexType>
-
-    <xsd:complexType name="templates">
-        <xsd:anyAttribute processContents="lax" />
-    </xsd:complexType>
 </xsd:schema>

+ 0 - 21
src/Symfony/Bundle/WebProfilerBundle/Resources/config/web_profiler.xml

@@ -1,21 +0,0 @@
-<?xml version="1.0" ?>
-
-<container xmlns="http://www.symfony-project.org/schema/dic/services"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://www.symfony-project.org/schema/dic/services http://www.symfony-project.org/schema/dic/services/services-1.0.xsd">
-
-    <parameters>
-        <parameter key="data_collector.templates" type="collection">
-            <parameter key="config">WebProfilerBundle:Collector:config</parameter>
-            <parameter key="request">WebProfilerBundle:Collector:request</parameter>
-            <parameter key="security">WebProfilerBundle:Collector:security</parameter>
-            <parameter key="exception">WebProfilerBundle:Collector:exception</parameter>
-            <parameter key="events">WebProfilerBundle:Collector:events</parameter>
-            <parameter key="logger">WebProfilerBundle:Collector:logger</parameter>
-            <parameter key="timer">WebProfilerBundle:Collector:timer</parameter>
-            <parameter key="memory">WebProfilerBundle:Collector:memory</parameter>
-            <parameter key="db">DoctrineBundle:Collector:db</parameter>
-            <parameter key="mongodb">DoctrineMongoDBBundle:Collector:mongodb</parameter>
-        </parameter>
-    </parameters>
-</container>