refactored code to use get() when outputting a single route

this is useful for a CMS, where in most cases there will be too many routes to make it feasible to load all of them. here a router implementation will be used that will return an empty collection for ->all(). with this refactoring the given routes will not be listed via router:debug, but would still be shown when using router:debug [name]
This commit is contained in:
lsmith77 2012-04-17 10:08:13 +02:00
parent e7470ffebb
commit b06537e351

View File

@ -65,22 +65,22 @@ EOF
*/ */
protected function execute(InputInterface $input, OutputInterface $output) protected function execute(InputInterface $input, OutputInterface $output)
{ {
$router = $this->getContainer()->get('router'); $name = $input->getArgument('name');
$routes = array(); if ($name) {
foreach ($router->getRouteCollection()->all() as $name => $route) { $this->outputRoute($output, $name);
$routes[$name] = $route->compile();
}
if ($input->getArgument('name')) {
$this->outputRoute($output, $routes, $input->getArgument('name'));
} else { } else {
$this->outputRoutes($output, $routes); $this->outputRoutes($output);
} }
} }
protected function outputRoutes(OutputInterface $output, $routes) protected function outputRoutes(OutputInterface $output)
{ {
$routes = array();
foreach ($this->getContainer()->get('router')->getRouteCollection()->all() as $name => $route) {
$routes[$name] = $route->compile();
}
$output->writeln($this->getHelper('formatter')->formatSection('router', 'Current routes')); $output->writeln($this->getHelper('formatter')->formatSection('router', 'Current routes'));
$maxName = 4; $maxName = 4;
@ -112,15 +112,16 @@ EOF
/** /**
* @throws \InvalidArgumentException When route does not exist * @throws \InvalidArgumentException When route does not exist
*/ */
protected function outputRoute(OutputInterface $output, $routes, $name) protected function outputRoute(OutputInterface $output, $name)
{ {
$output->writeln($this->getHelper('formatter')->formatSection('router', sprintf('Route "%s"', $name))); $route = $this->getContainer()->get('router')->getRouteCollection()->get($name);
if (!$route) {
if (!isset($routes[$name])) {
throw new \InvalidArgumentException(sprintf('The route "%s" does not exist.', $name)); throw new \InvalidArgumentException(sprintf('The route "%s" does not exist.', $name));
} }
$route = $routes[$name]; $output->writeln($this->getHelper('formatter')->formatSection('router', sprintf('Route "%s"', $name)));
$route = $route->compile();
$output->writeln(sprintf('<comment>Name</comment> %s', $name)); $output->writeln(sprintf('<comment>Name</comment> %s', $name));
$output->writeln(sprintf('<comment>Pattern</comment> %s', $route->getPattern())); $output->writeln(sprintf('<comment>Pattern</comment> %s', $route->getPattern()));
$output->writeln(sprintf('<comment>Class</comment> %s', get_class($route))); $output->writeln(sprintf('<comment>Class</comment> %s', get_class($route)));