Ejemplo n.º 1
0
 /**
  * When mounting a controller class with a prefix most times you have a route with a blank path.
  * That is the only route that flushes to include an (unwanted) trailing slash.
  *
  * This fixes that trailing slash.
  *
  * @param string $prefix
  * @return \Symfony\Component\Routing\RouteCollection
  */
 public function flush($prefix = '')
 {
     $routes = parent::flush($prefix);
     foreach ($routes->all() as $name => $route) {
         if (substr($route->getPath(), -1) === '/') {
             $route->setPath(rtrim($route->getPath(), '/'));
         }
     }
     return $routes;
 }
Ejemplo n.º 2
0
 public function testConflictingRouteNames()
 {
     $controllers = new ControllerCollection();
     $mountedRootController = new Controller(new Route('/'));
     $controllers->add($mountedRootController);
     $mainRootController = new Controller(new Route('/'));
     $mainRootController->bindDefaultRouteName('main_');
     $controllers->flush();
     $this->assertNotEquals($mainRootController->getRouteName(), $mountedRootController->getRouteName());
 }
 public function testUniqueGeneratedRouteNames()
 {
     $controllers = new ControllerCollection(new Route());
     $controllers->match('/a-a', function () {
     });
     $controllers->match('/a_a', function () {
     });
     $routes = $controllers->flush();
     $this->assertCount(2, $routes->all());
     $this->assertEquals(array('_a_a', '_a_a_'), array_keys($routes->all()));
 }
Ejemplo n.º 4
0
 public function testControllerFreezing()
 {
     $routes = new RouteCollection();
     $controllers = new ControllerCollection($routes);
     $fooController = new Controller(new Route('/foo'));
     $fooController->bind('foo');
     $controllers->add($fooController);
     $barController = new Controller(new Route('/bar'));
     $barController->bind('bar');
     $controllers->add($barController);
     $controllers->flush();
     try {
         $fooController->bind('foo2');
         $this->fail();
     } catch (ControllerFrozenException $e) {
     }
     try {
         $barController->bind('bar2');
         $this->fail();
     } catch (ControllerFrozenException $e) {
     }
 }
 public function testRoutesFactoryInConstructor()
 {
     $app = new Application();
     $app['routes_factory'] = $app->factory(function () {
         return new RouteCollectionSubClass2();
     });
     $controllers = new ControllerCollection(new Route(), $app['routes_factory']);
     $routes = $controllers->flush();
     $this->assertInstanceOf('Silex\\Tests\\RouteCollectionSubClass2', $routes);
 }
 public function testUniqueGeneratedRouteNamesAmongNestedMounts()
 {
     $controllers = new ControllerCollection(new Route());
     $controllers->mount('/root-a', $rootA = new ControllerCollection(new Route()));
     $controllers->mount('/root_a', $rootB = new ControllerCollection(new Route()));
     $rootA->mount('/tree', $treeA = new ControllerCollection(new Route()));
     $rootB->mount('/tree', $treeB = new ControllerCollection(new Route()));
     $treeA->match('/leaf', function () {
     });
     $treeB->match('/leaf', function () {
     });
     $routes = $controllers->flush();
     $this->assertCount(2, $routes->all());
     $this->assertEquals(array('_root_a_tree_leaf', '_root_a_tree_leaf_'), array_keys($routes->all()));
 }