diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/RouterApacheDumperCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/RouterApacheDumperCommand.php
index bfbfaa78bc..f092b118d2 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/RouterApacheDumperCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/RouterApacheDumperCommand.php
@@ -15,6 +15,7 @@ use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Routing\Matcher\Dumper\ApacheMatcherDumper;
use Symfony\Component\Routing\RouterInterface;
@@ -74,9 +75,11 @@ EOF
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
- $formatter = $this->getHelper('formatter');
+ $output = new SymfonyStyle($input, $output);
- $output->writeln($formatter->formatSection('warning', 'The router:dump-apache command is deprecated since version 2.5 and will be removed in 3.0', 'comment'));
+ $output->title('Router Apache Dumper');
+
+ $output->caution('The router:dump-apache command is deprecated since version 2.5 and will be removed in 3.0.');
$router = $this->getContainer()->get('router');
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/RouterDebugCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/RouterDebugCommand.php
index 6f7db66a66..9b96c77868 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/RouterDebugCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/RouterDebugCommand.php
@@ -16,6 +16,7 @@ use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
+use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Routing\Route;
@@ -77,8 +78,10 @@ EOF
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
+ $output = new SymfonyStyle($input, $output);
+
if (false !== strpos($input->getFirstArgument(), ':d')) {
- $output->writeln('The use of "router:debug" command is deprecated since version 2.7 and will be removed in 3.0. Use the "debug:router" instead.');
+ $output->caution('The use of "router:debug" command is deprecated since version 2.7 and will be removed in 3.0. Use the "debug:router" instead.');
}
$name = $input->getArgument('name');
@@ -89,11 +92,14 @@ EOF
if (!$route) {
throw new \InvalidArgumentException(sprintf('The route "%s" does not exist.', $name));
}
+
$this->convertController($route);
+
$helper->describe($output, $route, array(
'format' => $input->getOption('format'),
'raw_text' => $input->getOption('raw'),
'name' => $name,
+ 'output' => $output,
));
} else {
$routes = $this->getContainer()->get('router')->getRouteCollection();
@@ -106,6 +112,7 @@ EOF
'format' => $input->getOption('format'),
'raw_text' => $input->getOption('raw'),
'show_controllers' => $input->getOption('show-controllers'),
+ 'output' => $output,
));
}
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Command/RouterMatchCommand.php b/src/Symfony/Bundle/FrameworkBundle/Command/RouterMatchCommand.php
index c1afc9d83b..ee69077003 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Command/RouterMatchCommand.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Command/RouterMatchCommand.php
@@ -11,11 +11,12 @@
namespace Symfony\Bundle\FrameworkBundle\Command;
+use Symfony\Component\Console\Input\ArrayInput;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
-use Symfony\Component\Console\Input\ArrayInput;
+use Symfony\Component\Console\Style\SymfonyStyle;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Component\Routing\Matcher\TraceableUrlMatcher;
@@ -60,7 +61,7 @@ class RouterMatchCommand extends ContainerAwareCommand
The %command.name% shows which routes match a given request and which don't and for what reason:
php %command.full_name% /foo
-
+
or
php %command.full_name% /foo --method POST --scheme https --host symfony.com --verbose
@@ -75,6 +76,8 @@ EOF
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
+ $output = new SymfonyStyle($input, $output);
+
$router = $this->getContainer()->get('router');
$context = $router->getContext();
if (null !== $method = $input->getOption('method')) {
@@ -91,25 +94,26 @@ EOF
$traces = $matcher->getTraces($input->getArgument('path_info'));
+ $output->newLine();
+
$matches = false;
foreach ($traces as $trace) {
if (TraceableUrlMatcher::ROUTE_ALMOST_MATCHES == $trace['level']) {
- $output->writeln(sprintf('Route "%s" almost matches but %s>', $trace['name'], lcfirst($trace['log'])));
+ $output->text(sprintf('Route "%s"> almost matches but %s', $trace['name'], lcfirst($trace['log'])));
} elseif (TraceableUrlMatcher::ROUTE_MATCHES == $trace['level']) {
- $output->writeln(sprintf('Route "%s" matches>', $trace['name']));
+ $output->success(sprintf('Route "%s" matches', $trace['name']));
- $routerDebugcommand = $this->getApplication()->find('debug:router');
- $output->writeln('');
- $routerDebugcommand->run(new ArrayInput(array('name' => $trace['name'])), $output);
+ $routerDebugCommand = $this->getApplication()->find('debug:router');
+ $routerDebugCommand->run(new ArrayInput(array('name' => $trace['name'])), $output);
$matches = true;
} elseif ($input->getOption('verbose')) {
- $output->writeln(sprintf('Route "%s" does not match: %s', $trace['name'], $trace['log']));
+ $output->text(sprintf('Route "%s" does not match: %s', $trace['name'], $trace['log']));
}
}
if (!$matches) {
- $output->writeln(sprintf('None of the routes match the path "%s">', $input->getArgument('path_info')));
+ $output->error(sprintf('None of the routes match the path "%s"', $input->getArgument('path_info')));
return 1;
}
diff --git a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
index 422e50ead2..c77598c82c 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Console/Descriptor/TextDescriptor.php
@@ -34,11 +34,13 @@ class TextDescriptor extends Descriptor
protected function describeRouteCollection(RouteCollection $routes, array $options = array())
{
$showControllers = isset($options['show_controllers']) && $options['show_controllers'];
- $headers = array('Name', 'Method', 'Scheme', 'Host', 'Path');
- $table = new Table($this->getOutput());
- $table->setStyle('compact');
- $table->setHeaders($showControllers ? array_merge($headers, array('Controller')) : $headers);
+ $tableHeaders = array('Name', 'Method', 'Scheme', 'Host', 'Path');
+ if ($showControllers) {
+ $tableHeaders[] = 'Controller';
+ }
+
+ $tableRows = array();
foreach ($routes->all() as $name => $route) {
$row = array(
$name,
@@ -58,11 +60,16 @@ class TextDescriptor extends Descriptor
$row[] = $controller;
}
- $table->addRow($row);
+ $tableRows[] = $row;
}
- $this->writeText($this->formatSection('router', 'Current routes')."\n", $options);
- $table->render();
+ if (isset($options['output'])) {
+ $options['output']->table($tableHeaders, $tableRows);
+ } else {
+ $table = new Table($this->getOutput());
+ $table->setHeaders($tableHeaders)->setRows($tableRows);
+ $table->render();
+ }
}
/**
@@ -73,26 +80,24 @@ class TextDescriptor extends Descriptor
$requirements = $route->getRequirements();
unset($requirements['_scheme'], $requirements['_method']);
- // fixme: values were originally written as raw
- $description = array(
- 'Path '.$route->getPath(),
- 'Path Regex '.$route->compile()->getRegex(),
- 'Host '.('' !== $route->getHost() ? $route->getHost() : 'ANY'),
- 'Host Regex '.('' !== $route->getHost() ? $route->compile()->getHostRegex() : ''),
- 'Scheme '.($route->getSchemes() ? implode('|', $route->getSchemes()) : 'ANY'),
- 'Method '.($route->getMethods() ? implode('|', $route->getMethods()) : 'ANY'),
- 'Class '.get_class($route),
- 'Defaults '.$this->formatRouterConfig($route->getDefaults()),
- 'Requirements '.($requirements ? $this->formatRouterConfig($requirements) : 'NO CUSTOM'),
- 'Options '.$this->formatRouterConfig($route->getOptions()),
+ $tableHeaders = array('Property', 'Value');
+ $tableRows = array(
+ array('Route Name', $options['name']),
+ array('Path', $route->getPath()),
+ array('Path Regex', $route->compile()->getRegex()),
+ array('Host', ('' !== $route->getHost() ? $route->getHost() : 'ANY')),
+ array('Host Regex', ('' !== $route->getHost() ? $route->compile()->getHostRegex() : '')),
+ array('Scheme', ($route->getSchemes() ? implode('|', $route->getSchemes()) : 'ANY')),
+ array('Method', ($route->getMethods() ? implode('|', $route->getMethods()) : 'ANY')),
+ array('Requirements', ($requirements ? $this->formatRouterConfig($requirements) : 'NO CUSTOM')),
+ array('Class', get_class($route)),
+ array('Defaults', $this->formatRouterConfig($route->getDefaults())),
+ array('Options', $this->formatRouterConfig($route->getOptions())),
);
- if (isset($options['name'])) {
- array_unshift($description, 'Name '.$options['name']);
- array_unshift($description, $this->formatSection('router', sprintf('Route "%s"', $options['name'])));
- }
-
- $this->writeText(implode("\n", $description)."\n", $options);
+ $table = new Table($this->getOutput());
+ $table->setHeaders($tableHeaders)->setRows($tableRows);
+ $table->render();
}
/**
@@ -382,23 +387,24 @@ class TextDescriptor extends Descriptor
}
/**
- * @param array $array
+ * @param array $config
*
* @return string
*/
- private function formatRouterConfig(array $array)
+ private function formatRouterConfig(array $config)
{
- if (!count($array)) {
+ if (empty($config)) {
return 'NONE';
}
- $string = '';
- ksort($array);
- foreach ($array as $name => $value) {
- $string .= ($string ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value);
+ ksort($config);
+
+ $configAsString = '';
+ foreach ($config as $key => $value) {
+ $configAsString .= sprintf("\n%s: %s", $key, $this->formatValue($value));
}
- return $string;
+ return trim($configAsString);
}
/**