public function load($resource, $type = null) { if (true === $this->loaded) { throw new \RuntimeException('Do not add this loader twice'); } $routes = new RouteCollection(); $contextConfigLoader = $this->contextConfigLoader; foreach ($contextConfigLoader->getRouting() as $routing) { foreach ($routing as $id => $info) { if (array_key_exists('pattern', $info)) { $route = new Route($info['pattern']); // merge options and defaults if (array_key_exists('defaults', $info)) { $route->addDefaults($info['defaults']); } if (array_key_exists('options', $info)) { $route->addOptions($info['options']); } if (array_key_exists('requirements', $info)) { $route->addRequirements($info['requirements']); } } $routes->add($id, $route); } } return $routes; }
public function load($resource, $type = null) { $collection = new RouteCollection(); //load static routes $importedRoutes = $this->import('@AppBundle/Resources/config/static-routing.yml', 'yaml'); $collection->addCollection($importedRoutes); //load dynamic routes from database $pages = $this->doctrine->getRepository('DataBundle:Page')->findBy(['active' => true], ['ordering' => 'asc']); $importedRoutes = new RouteCollection(); //add default page if no pages are defined if (count($pages) == 0) { $route = new Route('/', ['_controller' => 'AppBundle:Page:defaultIndex']); $importedRoutes->add('index', $route); } foreach ($pages as $page) { $route = new Route('/' . $page->getSlug(), ['_controller' => 'AppBundle:Page:page']); //todo: make slug conversion safe if ($page->getIsIndex()) { $name = 'index'; } else { $name = str_replace('/', '', strtolower(trim($page->getTitle()))); } $importedRoutes->add($name, $route); //generate blog post url for tag if ($page->getIsBlogTag() && !is_null($page->getTag())) { $route = new Route('/' . trim($page->getSlug()) . '/post/{slug}', ['_controller' => 'AppBundle:Page:post']); $route->addOptions(['post_from' => 'tag']); $name = str_replace('/', '', strtolower(trim($page->getTitle())) . '_post'); $importedRoutes->add($name, $route); } //generate blog post url for blog if ($page->getIsBlog() && !is_null($page->getBlog())) { $route = new Route('/' . trim($page->getSlug()) . '/post/{slug}', ['_controller' => 'AppBundle:Page:post']); $route->addOptions(['post_from' => 'blog']); $name = str_replace('/', '', strtolower(trim($page->getTitle())) . '_post'); $importedRoutes->add($name, $route); } } $collection->addCollection($importedRoutes); return $collection; }