Prechádzať zdrojové kódy

Added support for bundles without a vendor name e.g. AppBundle from Symfony best practices

Martin Hasoň 10 rokov pred
rodič
commit
a64d98e56c
2 zmenil súbory, kde vykonal 16 pridanie a 9 odobranie
  1. 5 6
      Admin/Admin.php
  2. 11 3
      Tests/Admin/AdminTest.php

+ 5 - 6
Admin/Admin.php

@@ -55,7 +55,7 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
     const CONTEXT_MENU       = 'menu';
     const CONTEXT_DASHBOARD  = 'dashboard';
 
-    const CLASS_REGEX        = '@([A-Za-z0-9]*)\\\(Bundle\\\)?([A-Za-z0-9]+)Bundle\\\(Entity|Document|Model|PHPCR|CouchDocument|Phpcr|Doctrine\\\Orm|Doctrine\\\Phpcr|Doctrine\\\MongoDB|Doctrine\\\CouchDB)\\\(.*)@';
+    const CLASS_REGEX        = '@(?:([A-Za-z0-9]*)\\\)?(Bundle\\\)?([A-Za-z0-9]+)Bundle\\\(Entity|Document|Model|PHPCR|CouchDocument|Phpcr|Doctrine\\\Orm|Doctrine\\\Phpcr|Doctrine\\\MongoDB|Doctrine\\\CouchDB)\\\(.*)@';
 
     /**
      * The class name managed by the admin class
@@ -968,8 +968,8 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
                 );
             } else {
 
-                $this->baseRoutePattern = sprintf('/%s/%s/%s',
-                    $this->urlize($matches[1], '-'),
+                $this->baseRoutePattern = sprintf('/%s%s/%s',
+                    empty($matches[1]) ? '' : $this->urlize($matches[1], '-').'/',
                     $this->urlize($matches[3], '-'),
                     $this->urlize($matches[5], '-')
                 );
@@ -1001,9 +1001,8 @@ abstract class Admin implements AdminInterface, DomainObjectInterface
                     $this->urlize($matches[5])
                 );
             } else {
-
-                $this->baseRouteName = sprintf('admin_%s_%s_%s',
-                    $this->urlize($matches[1]),
+                $this->baseRouteName = sprintf('admin_%s%s_%s',
+                    empty($matches[1]) ? '' : $this->urlize($matches[1]).'_',
                     $this->urlize($matches[3]),
                     $this->urlize($matches[5])
                 );

+ 11 - 3
Tests/Admin/AdminTest.php

@@ -437,6 +437,10 @@ class AdminTest extends \PHPUnit_Framework_TestCase
                 'Symfony\Cmf\Bundle\FooBundle\Doctrine\CouchDB\Menu',
                 '/cmf/foo/menu'
             ),
+            array(
+                'AppBundle\Entity\User',
+                '/app/user'
+            ),
         );
     }
 
@@ -463,7 +467,7 @@ class AdminTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetBaseRoutePatternWithUnreconizedClassname()
     {
-        $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
+        $admin = new PostAdmin('sonata.post.admin.post', 'News\Entity\Post', 'SonataNewsBundle:PostAdmin');
         $admin->getBaseRoutePattern();
     }
 
@@ -510,7 +514,7 @@ class AdminTest extends \PHPUnit_Framework_TestCase
                 'Symfony\Bundle\BarBarBundle\Doctrine\Phpcr\Menu\Item',
                 'admin_symfony_barbar_menu_item'
             ),
-        array(
+            array(
                 'Symfony\Cmf\Bundle\FooBundle\Doctrine\Orm\Menu',
                 'admin_cmf_foo_menu'
             ),
@@ -522,6 +526,10 @@ class AdminTest extends \PHPUnit_Framework_TestCase
                 'Symfony\Cmf\Bundle\FooBundle\Doctrine\CouchDB\Menu',
                 'admin_cmf_foo_menu'
             ),
+            array(
+                'AppBundle\Entity\User',
+                'admin_app_user'
+            ),
         );
     }
 
@@ -570,7 +578,7 @@ class AdminTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetBaseRouteNameWithUnreconizedClassname()
     {
-        $admin = new PostAdmin('sonata.post.admin.post', 'NewsBundle\Entity\Post', 'SonataNewsBundle:PostAdmin');
+        $admin = new PostAdmin('sonata.post.admin.post', 'News\Entity\Post', 'SonataNewsBundle:PostAdmin');
         $admin->getBaseRouteName();
     }