|
11 | 11 |
|
12 | 12 | namespace FOS\JsRoutingBundle\Command;
|
13 | 13 |
|
| 14 | +use FOS\JsRoutingBundle\Extractor\ExposedRoutesExtractorInterface; |
14 | 15 | use Symfony\Bundle\FrameworkBundle\Command\RouterDebugCommand;
|
| 16 | +use Symfony\Bundle\FrameworkBundle\Console\Helper\DescriptorHelper; |
15 | 17 | use Symfony\Component\Console\Input\InputInterface;
|
16 | 18 | use Symfony\Component\Console\Output\OutputInterface;
|
| 19 | +use Symfony\Component\Routing\RouteCollection; |
17 | 20 |
|
18 | 21 | /**
|
19 | 22 | * A console command for retrieving information about exposed routes.
|
@@ -51,20 +54,48 @@ protected function configure()
|
51 | 54 | */
|
52 | 55 | protected function execute(InputInterface $input, OutputInterface $output)
|
53 | 56 | {
|
| 57 | + /** @var ExposedRoutesExtractorInterface $extractor */ |
54 | 58 | $extractor = $this->getContainer()->get('fos_js_routing.extractor');
|
55 | 59 | if ($input->getArgument('name')) {
|
56 | 60 | $route = $this->getContainer()->get('router')->getRouteCollection()->get($input->getArgument('name'));
|
| 61 | + |
57 | 62 | if (!$route) {
|
58 | 63 | throw new \InvalidArgumentException(sprintf('The route "%s" does not exist.', $input->getArgument('name')));
|
59 | 64 | }
|
| 65 | + |
60 | 66 | $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 |
62 | 73 | $this->outputRoute($output, $input->getArgument('name'));
|
63 | 74 | } 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 | + )); |
65 | 81 | }
|
66 | 82 | } 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 | + } |
68 | 99 | }
|
69 | 100 | }
|
70 | 101 | }
|
0 commit comments