浏览代码

Merge branch '2.1'

Thomas Rabaix 12 年之前
父节点
当前提交
815ad1cae7
共有 1 个文件被更改,包括 39 次插入3 次删除
  1. 39 3
      Resources/doc/reference/advance.rst

+ 39 - 3
Resources/doc/reference/advance.rst

@@ -20,7 +20,7 @@ router                        router
 validator                     validator
 validator                     validator
 security_handler              sonata.admin.security.handler
 security_handler              sonata.admin.security.handler
 menu_factory                  knp_menu.factory
 menu_factory                  knp_menu.factory
-router_builder                sonata.admin.route.path_info
+route_builder                sonata.admin.route.path_info
 label_translator_strategy     sonata.admin.label.strategy.form_component
 label_translator_strategy     sonata.admin.label.strategy.form_component
 =========================     =============================================
 =========================     =============================================
 
 
@@ -39,7 +39,7 @@ You have 2 ways of defining the dependencies inside a ``services.xml``.
                 group="Project"
                 group="Project"
                 label="Project"
                 label="Project"
                 label_translator_strategy="sonata.admin.label.strategy.native"
                 label_translator_strategy="sonata.admin.label.strategy.native"
-                router_builder="sonata.admin.route.path_info"
+                route_builder="sonata.admin.route.path_info"
                 />
                 />
             <argument />
             <argument />
             <argument>AcmeBundle\ProjectBundle\Entity\Project</argument>
             <argument>AcmeBundle\ProjectBundle\Entity\Project</argument>
@@ -65,11 +65,47 @@ You have 2 ways of defining the dependencies inside a ``services.xml``.
                 <argument type="service" id="sonata.admin.label.strategy.native" />
                 <argument type="service" id="sonata.admin.label.strategy.native" />
             </call>
             </call>
 
 
-            <call method="setRouterBuilder">
+            <call method="setRouteBuilder">
                 <argument type="service" id="sonata.admin.route.path_info" />
                 <argument type="service" id="sonata.admin.route.path_info" />
             </call>
             </call>
         </service>
         </service>
 
 
+If you want to create your own RouteBuilder, you can do it using code like
+
+* xml service registration
+
+.. code-block:: xml
+
+        <service id="acme.admin.route.entity" class="Acme\AdminBundle\Route\EntityRouterBuilder">
+            <argument type="service" id="sonata.admin.audit.manager" />
+        </service>
+
+* php Route Generator
+
+.. code-block:: php
+
+        <?php
+        namespace Acme\AdminBundle\Route;
+        
+        use Sonata\AdminBundle\Builder\RouteBuilderInterface;
+        use Sonata\AdminBundle\Admin\AdminInterface;
+        use Sonata\AdminBundle\Model\AuditManagerInterface;
+        use Sonata\AdminBundle\Route\PathInfoBuilder;
+        use Sonata\AdminBundle\Route\RouteCollection;
+        
+        class EntityRouterBuilder extends PathInfoBuilder implements RouteBuilderInterface
+        {
+            /**
+             * @param \Sonata\AdminBundle\Admin\AdminInterface $admin
+             * @param \Sonata\AdminBundle\Route\RouteCollection $collection
+             */
+            public function build(AdminInterface $admin, RouteCollection $collection)
+            {
+                parent::build($admin,$collection);
+                $collection->add('yourSubAction');
+            }
+        }
+
 
 
 If you want to modify the service that is going to be injected, add the following code to your
 If you want to modify the service that is going to be injected, add the following code to your
 application's config file:
 application's config file: