1515use CodeIgniter \CLI \BaseCommand ;
1616use CodeIgniter \CLI \CLI ;
1717use CodeIgniter \Commands \Utilities \Routes \AutoRouteCollector ;
18+ use CodeIgniter \Commands \Utilities \Routes \FilterCollector ;
19+ use CodeIgniter \Commands \Utilities \Routes \SampleURIGenerator ;
1820use Config \Services ;
1921
2022/**
@@ -44,7 +46,7 @@ class Routes extends BaseCommand
4446 *
4547 * @var string
4648 */
47- protected $ description = 'Displays all of user-defined routes. Does NOT display auto-detected routes. ' ;
49+ protected $ description = 'Displays all routes. ' ;
4850
4951 /**
5052 * the Command's usage
@@ -86,18 +88,24 @@ public function run(array $params)
8688 'cli ' ,
8789 ];
8890
89- $ tbody = [];
91+ $ tbody = [];
92+ $ uriGenerator = new SampleURIGenerator ();
93+ $ filterCollector = new FilterCollector ();
9094
9195 foreach ($ methods as $ method ) {
9296 $ routes = $ collection ->getRoutes ($ method );
9397
9498 foreach ($ routes as $ route => $ handler ) {
95- // filter for strings, as callbacks aren't displayable
9699 if (is_string ($ handler ) || $ handler instanceof Closure) {
100+ $ sampleUri = $ uriGenerator ->get ($ route );
101+ $ filters = $ filterCollector ->get ($ method , $ sampleUri );
102+
97103 $ tbody [] = [
98104 strtoupper ($ method ),
99105 $ route ,
100106 is_string ($ handler ) ? $ handler : '(Closure) ' ,
107+ implode (' ' , array_map ('class_basename ' , $ filters ['before ' ])),
108+ implode (' ' , array_map ('class_basename ' , $ filters ['after ' ])),
101109 ];
102110 }
103111 }
@@ -109,13 +117,23 @@ public function run(array $params)
109117 $ collection ->getDefaultController (),
110118 $ collection ->getDefaultMethod ()
111119 );
112- $ tbody = [...$ tbody , ...$ autoRouteCollector ->get ()];
120+ $ autoRoutes = $ autoRouteCollector ->get ();
121+
122+ foreach ($ autoRoutes as &$ routes ) {
123+ $ filters = $ filterCollector ->get ('get ' , $ uriGenerator ->get ($ routes [1 ]));
124+ $ routes [] = implode (' ' , array_map ('class_basename ' , $ filters ['before ' ]));
125+ $ routes [] = implode (' ' , array_map ('class_basename ' , $ filters ['after ' ]));
126+ }
127+
128+ $ tbody = [...$ tbody , ...$ autoRoutes ];
113129 }
114130
115131 $ thead = [
116132 'Method ' ,
117133 'Route ' ,
118134 'Handler ' ,
135+ 'Before Filters ' ,
136+ 'After Filters ' ,
119137 ];
120138
121139 CLI ::table ($ tbody , $ thead );
0 commit comments