|
15 | 15 | use CodeIgniter\CLI\BaseCommand; |
16 | 16 | use CodeIgniter\CLI\CLI; |
17 | 17 | use CodeIgniter\Commands\Utilities\Routes\AutoRouteCollector; |
| 18 | +use CodeIgniter\Commands\Utilities\Routes\AutoRouterImproved\AutoRouteCollector as AutoRouteCollectorImproved; |
18 | 19 | use CodeIgniter\Commands\Utilities\Routes\FilterCollector; |
19 | 20 | use CodeIgniter\Commands\Utilities\Routes\SampleURIGenerator; |
20 | 21 | use Config\Services; |
@@ -112,19 +113,34 @@ public function run(array $params) |
112 | 113 | } |
113 | 114 |
|
114 | 115 | if ($collection->shouldAutoRoute()) { |
115 | | - $autoRouteCollector = new AutoRouteCollector( |
116 | | - $collection->getDefaultNamespace(), |
117 | | - $collection->getDefaultController(), |
118 | | - $collection->getDefaultMethod() |
119 | | - ); |
120 | | - $autoRoutes = $autoRouteCollector->get(); |
121 | | - |
122 | | - foreach ($autoRoutes as &$routes) { |
123 | | - // There is no `auto` method, but it is intentional not to get route filters. |
124 | | - $filters = $filterCollector->get('auto', $uriGenerator->get($routes[1])); |
125 | | - |
126 | | - $routes[] = implode(' ', array_map('class_basename', $filters['before'])); |
127 | | - $routes[] = implode(' ', array_map('class_basename', $filters['after'])); |
| 116 | + $autoRoutesImproved = config('Feature')->autoRoutesImproved ?? false; |
| 117 | + |
| 118 | + if ($autoRoutesImproved) { |
| 119 | + $autoRouteCollector = new AutoRouteCollectorImproved( |
| 120 | + $collection->getDefaultNamespace(), |
| 121 | + $collection->getDefaultController(), |
| 122 | + $collection->getDefaultMethod(), |
| 123 | + $methods, |
| 124 | + $collection->getRegisteredControllers('*') |
| 125 | + ); |
| 126 | + |
| 127 | + $autoRoutes = $autoRouteCollector->get(); |
| 128 | + } else { |
| 129 | + $autoRouteCollector = new AutoRouteCollector( |
| 130 | + $collection->getDefaultNamespace(), |
| 131 | + $collection->getDefaultController(), |
| 132 | + $collection->getDefaultMethod() |
| 133 | + ); |
| 134 | + |
| 135 | + $autoRoutes = $autoRouteCollector->get(); |
| 136 | + |
| 137 | + foreach ($autoRoutes as &$routes) { |
| 138 | + // There is no `auto` method, but it is intentional not to get route filters. |
| 139 | + $filters = $filterCollector->get('auto', $uriGenerator->get($routes[1])); |
| 140 | + |
| 141 | + $routes[] = implode(' ', array_map('class_basename', $filters['before'])); |
| 142 | + $routes[] = implode(' ', array_map('class_basename', $filters['after'])); |
| 143 | + } |
128 | 144 | } |
129 | 145 |
|
130 | 146 | $tbody = [...$tbody, ...$autoRoutes]; |
|
0 commit comments