Skip to content

Commit dade3bb

Browse files
committed
Fixed the debug command for Symfony 2.4+
This backports the fixes done by @ClementGautier in the 2.0 version of the bundle. Closes FriendsOfSymfony#127
1 parent 04be8d9 commit dade3bb

File tree

1 file changed

+34
-3
lines changed

1 file changed

+34
-3
lines changed

Command/RouterDebugExposedCommand.php

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@
1111

1212
namespace FOS\JsRoutingBundle\Command;
1313

14+
use FOS\JsRoutingBundle\Extractor\ExposedRoutesExtractorInterface;
1415
use Symfony\Bundle\FrameworkBundle\Command\RouterDebugCommand;
16+
use Symfony\Bundle\FrameworkBundle\Console\Helper\DescriptorHelper;
1517
use Symfony\Component\Console\Input\InputInterface;
1618
use Symfony\Component\Console\Output\OutputInterface;
19+
use Symfony\Component\Routing\RouteCollection;
1720

1821
/**
1922
* A console command for retrieving information about exposed routes.
@@ -51,20 +54,48 @@ protected function configure()
5154
*/
5255
protected function execute(InputInterface $input, OutputInterface $output)
5356
{
57+
/** @var ExposedRoutesExtractorInterface $extractor */
5458
$extractor = $this->getContainer()->get('fos_js_routing.extractor');
5559
if ($input->getArgument('name')) {
5660
$route = $this->getContainer()->get('router')->getRouteCollection()->get($input->getArgument('name'));
61+
5762
if (!$route) {
5863
throw new \InvalidArgumentException(sprintf('The route "%s" does not exist.', $input->getArgument('name')));
5964
}
65+
6066
$exposedRoutes = $extractor->getExposedRoutes();
61-
if (isset($exposedRoutes[$input->getArgument('name')])) {
67+
if (!isset($exposedRoutes[$input->getArgument('name')])) {
68+
throw new \InvalidArgumentException(sprintf('The route "%s" was found, but it is not an exposed route.', $input->getArgument('name')));
69+
}
70+
71+
if (!class_exists('Symfony\Bundle\FrameworkBundle\Console\Helper\DescriptorHelper')) {
72+
// BC layer for Symfony 2.3 and lower
6273
$this->outputRoute($output, $input->getArgument('name'));
6374
} else {
64-
throw new \InvalidArgumentException(sprintf('The route "%s" was found, but it is not an exposed route.', $input->getArgument('name')));
75+
$helper = new DescriptorHelper();
76+
$helper->describe($output, $route, array(
77+
'format' => $input->getOption('format'),
78+
'raw_text' => $input->getOption('raw'),
79+
'show_controllers' => $input->getOption('show-controllers'),
80+
));
6581
}
6682
} else {
67-
$this->outputRoutes($output, $extractor->getExposedRoutes());
83+
if (!class_exists('Symfony\Bundle\FrameworkBundle\Console\Helper\DescriptorHelper')) {
84+
// BC layer for Symfony 2.3 and lower
85+
$this->outputRoutes($output, $extractor->getExposedRoutes());
86+
} else {
87+
$routeCollection = new RouteCollection();
88+
foreach ($extractor->getExposedRoutes() as $name => $route) {
89+
$routeCollection->add($name, $route);
90+
}
91+
92+
$helper = new DescriptorHelper();
93+
$helper->describe($output, $routeCollection, array(
94+
'format' => $input->getOption('format'),
95+
'raw_text' => $input->getOption('raw'),
96+
'show_controllers' => $input->getOption('show-controllers'),
97+
));
98+
}
6899
}
69100
}
70101
}

0 commit comments

Comments
 (0)