[FrameworkBundle] fix router debug command
- use dedicated Route:getMethods, getSchemes - pattern -> path - show missing scheme requirement - show missing host regex - refactoring
This commit is contained in:
parent
d16d193d1e
commit
15bf0337ed
@ -20,6 +20,7 @@ use Symfony\Component\Routing\RouterInterface;
|
||||
* A console command for retrieving information about routes
|
||||
*
|
||||
* @author Fabien Potencier <fabien@symfony.com>
|
||||
* @author Tobias Schultze <http://tobion.de>
|
||||
*/
|
||||
class RouterDebugCommand extends ContainerAwareCommand
|
||||
{
|
||||
@ -85,34 +86,28 @@ EOF
|
||||
|
||||
$maxName = strlen('name');
|
||||
$maxMethod = strlen('method');
|
||||
$maxScheme = strlen('scheme');
|
||||
$maxHost = strlen('host');
|
||||
|
||||
foreach ($routes as $name => $route) {
|
||||
$requirements = $route->getRequirements();
|
||||
$method = isset($requirements['_method'])
|
||||
? strtoupper(is_array($requirements['_method'])
|
||||
? implode(', ', $requirements['_method']) : $requirements['_method']
|
||||
)
|
||||
: 'ANY';
|
||||
$method = $route->getMethods() ? implode('|', $route->getMethods()) : 'ANY';
|
||||
$scheme = $route->getSchemes() ? implode('|', $route->getSchemes()) : 'ANY';
|
||||
$host = '' !== $route->getHost() ? $route->getHost() : 'ANY';
|
||||
$maxName = max($maxName, strlen($name));
|
||||
$maxMethod = max($maxMethod, strlen($method));
|
||||
$maxScheme = max($maxScheme, strlen($scheme));
|
||||
$maxHost = max($maxHost, strlen($host));
|
||||
}
|
||||
$format = '%-'.$maxName.'s %-'.$maxMethod.'s %-'.$maxHost.'s %s';
|
||||
|
||||
// displays the generated routes
|
||||
$format1 = '%-'.($maxName + 19).'s %-'.($maxMethod + 19).'s %-'.($maxHost + 19).'s %s';
|
||||
$output->writeln(sprintf($format1, '<comment>Name</comment>', '<comment>Method</comment>', '<comment>Host</comment>', '<comment>Pattern</comment>'));
|
||||
$format = '%-'.$maxName.'s %-'.$maxMethod.'s %-'.$maxScheme.'s %-'.$maxHost.'s %s';
|
||||
$formatHeader = '%-'.($maxName + 19).'s %-'.($maxMethod + 19).'s %-'.($maxScheme + 19).'s %-'.($maxHost + 19).'s %s';
|
||||
$output->writeln(sprintf($formatHeader, '<comment>Name</comment>', '<comment>Method</comment>', '<comment>Scheme</comment>', '<comment>Host</comment>', '<comment>Path</comment>'));
|
||||
|
||||
foreach ($routes as $name => $route) {
|
||||
$requirements = $route->getRequirements();
|
||||
$method = isset($requirements['_method'])
|
||||
? strtoupper(is_array($requirements['_method'])
|
||||
? implode(', ', $requirements['_method']) : $requirements['_method']
|
||||
)
|
||||
: 'ANY';
|
||||
$method = $route->getMethods() ? implode('|', $route->getMethods()) : 'ANY';
|
||||
$scheme = $route->getSchemes() ? implode('|', $route->getSchemes()) : 'ANY';
|
||||
$host = '' !== $route->getHost() ? $route->getHost() : 'ANY';
|
||||
$output->writeln(sprintf($format, $name, $method, $host, $route->getPath()));
|
||||
$output->writeln(sprintf($format, $name, $method, $scheme, $host, $route->getPath()), OutputInterface::OUTPUT_RAW);
|
||||
}
|
||||
}
|
||||
|
||||
@ -126,41 +121,49 @@ EOF
|
||||
throw new \InvalidArgumentException(sprintf('The route "%s" does not exist.', $name));
|
||||
}
|
||||
|
||||
$host = '' !== $route->getHost() ? $route->getHost() : 'ANY';
|
||||
|
||||
$output->writeln($this->getHelper('formatter')->formatSection('router', sprintf('Route "%s"', $name)));
|
||||
|
||||
$output->writeln(sprintf('<comment>Name</comment> %s', $name));
|
||||
$output->writeln(sprintf('<comment>Pattern</comment> %s', $route->getPath()));
|
||||
$output->writeln(sprintf('<comment>Host</comment> %s', $host));
|
||||
$output->writeln(sprintf('<comment>Class</comment> %s', get_class($route)));
|
||||
$method = $route->getMethods() ? implode('|', $route->getMethods()) : 'ANY';
|
||||
$scheme = $route->getSchemes() ? implode('|', $route->getSchemes()) : 'ANY';
|
||||
$host = '' !== $route->getHost() ? $route->getHost() : 'ANY';
|
||||
|
||||
$defaults = '';
|
||||
$d = $route->getDefaults();
|
||||
ksort($d);
|
||||
foreach ($d as $name => $value) {
|
||||
$defaults .= ($defaults ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value);
|
||||
}
|
||||
$output->writeln(sprintf('<comment>Defaults</comment> %s', $defaults));
|
||||
$output->write('<comment>Name</comment> ');
|
||||
$output->writeln($name, OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$requirements = '';
|
||||
$r = $route->getRequirements();
|
||||
ksort($r);
|
||||
foreach ($r as $name => $value) {
|
||||
$requirements .= ($requirements ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value);
|
||||
}
|
||||
$requirements = '' !== $requirements ? $requirements : 'NONE';
|
||||
$output->writeln(sprintf('<comment>Requirements</comment> %s', $requirements));
|
||||
$output->write('<comment>Path</comment> ');
|
||||
$output->writeln($route->getPath(), OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$options = '';
|
||||
$o = $route->getOptions();
|
||||
ksort($o);
|
||||
foreach ($o as $name => $value) {
|
||||
$options .= ($options ? "\n".str_repeat(' ', 13) : '').$name.': '.$this->formatValue($value);
|
||||
$output->write('<comment>Host</comment> ');
|
||||
$output->writeln($host, OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$output->write('<comment>Scheme</comment> ');
|
||||
$output->writeln($scheme, OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$output->write('<comment>Method</comment> ');
|
||||
$output->writeln($method, OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$output->write('<comment>Class</comment> ');
|
||||
$output->writeln(get_class($route), OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$output->write('<comment>Defaults</comment> ');
|
||||
$output->writeln($this->formatConfigs($route->getDefaults()), OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$output->write('<comment>Requirements</comment> ');
|
||||
// we do not want to show the schemes and methods again that are also in the requirements for BC
|
||||
$requirements = $route->getRequirements();
|
||||
unset($requirements['_scheme'], $requirements['_method']);
|
||||
$output->writeln($this->formatConfigs($requirements) ?: 'NO CUSTOM', OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$output->write('<comment>Options</comment> ');
|
||||
$output->writeln($this->formatConfigs($route->getOptions()), OutputInterface::OUTPUT_RAW);
|
||||
|
||||
$output->write('<comment>Path-Regex</comment> ');
|
||||
$output->writeln($route->compile()->getRegex(), OutputInterface::OUTPUT_RAW);
|
||||
|
||||
if (null !== $route->compile()->getHostRegex()) {
|
||||
$output->write('<comment>Host-Regex</comment> ');
|
||||
$output->writeln($route->compile()->getHostRegex(), OutputInterface::OUTPUT_RAW);
|
||||
}
|
||||
$output->writeln(sprintf('<comment>Options</comment> %s', $options));
|
||||
$output->write('<comment>Regex</comment> ');
|
||||
$output->writeln(preg_replace('/^ /', '', preg_replace('/^/m', ' ', $route->compile()->getRegex())), OutputInterface::OUTPUT_RAW);
|
||||
}
|
||||
|
||||
protected function formatValue($value)
|
||||
@ -175,4 +178,15 @@ EOF
|
||||
|
||||
return preg_replace("/\n\s*/s", '', var_export($value, true));
|
||||
}
|
||||
|
||||
private function formatConfigs(array $array)
|
||||
{
|
||||
$string = '';
|
||||
ksort($array);
|
||||
foreach ($array as $name => $value) {
|
||||
$string .= ($string ? "\n" . str_repeat(' ', 13) : '') . $name . ': ' . $this->formatValue($value);
|
||||
}
|
||||
|
||||
return $string;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user