Laravel 4 如何通过组名获取路由
Laravel 4 how get routes by group name
在 Laravel 中,我知道我可以使用 `Route::getRoutes() 获取所有路由,但我找不到是否可以获取指定组中包含的所有路由的列表。
例如,我有这个路由文件:
Route::group(array('group_name' => 'pages'), function() {
Route::any('/authentication', array('as' => 'authentication', 'uses' => 'LogController@authForm' ));
Route::group(array('before' => 'auth_administration'), function() {
Route::any('/tags_category/index', array('as' => 'index-tags-categories', 'uses' => 'TagsCategoryController@index'));
Route::any('/tags_category/update', array('as' => 'update-tags-category', 'uses' => 'TagsCategoryController@update'));
});
});
Route::group(array('before' => 'auth_administration'), function() {
Route::any('/tags_category/store', array('as' => 'store-tags-category', 'uses' => 'TagsCategoryController@store'));
Route::any('/tags_category/update/{id}', array('as' => 'update-form-tags-category', 'uses' => 'TagsCategoryController@updateForm'));
Route::any('/tags_category/delete/{id}', array('as' => 'delete-tags-category', 'uses' => 'TagsCategoryController@delete'));
}); // operazioni protette
在我的控制器中,我只想获取第一组中包含的路由(具有变量 'group_name' 的路由)。
可能吗?如果是,我该怎么做?谢谢
用户 artisan 列出应用程序的所有路由
php artisan routes --name=admin
在Laravel 5
php artisan route:list --name=admin
在第一个参数中传递给组的属性存储在路由上的action
数组中。可以通过路由上的 getAction()
方法访问该数组。因此,一旦您获得了路由对象的访问权限,您就可以根据此信息进行过滤。
$name = 'pages';
$routeCollection = Route::getRoutes(); // RouteCollection object
$routes = $routeCollection->getRoutes(); // array of route objects
$grouped_routes = array_filter($routes, function($route) use ($name) {
$action = $route->getAction();
if (isset($action['group_name'])) {
// for the first level groups, $action['group_name'] will be a string
// for nested groups, $action['group_name'] will be an array
if (is_array($action['group_name'])) {
return in_array($name, $action['group_name']);
} else {
return $action['group_name'] == $name;
}
}
return false;
});
// array containing the route objects in the 'pages' group
dd($grouped_routes);
在 Laravel 中,我知道我可以使用 `Route::getRoutes() 获取所有路由,但我找不到是否可以获取指定组中包含的所有路由的列表。
例如,我有这个路由文件:
Route::group(array('group_name' => 'pages'), function() {
Route::any('/authentication', array('as' => 'authentication', 'uses' => 'LogController@authForm' ));
Route::group(array('before' => 'auth_administration'), function() {
Route::any('/tags_category/index', array('as' => 'index-tags-categories', 'uses' => 'TagsCategoryController@index'));
Route::any('/tags_category/update', array('as' => 'update-tags-category', 'uses' => 'TagsCategoryController@update'));
});
});
Route::group(array('before' => 'auth_administration'), function() {
Route::any('/tags_category/store', array('as' => 'store-tags-category', 'uses' => 'TagsCategoryController@store'));
Route::any('/tags_category/update/{id}', array('as' => 'update-form-tags-category', 'uses' => 'TagsCategoryController@updateForm'));
Route::any('/tags_category/delete/{id}', array('as' => 'delete-tags-category', 'uses' => 'TagsCategoryController@delete'));
}); // operazioni protette
在我的控制器中,我只想获取第一组中包含的路由(具有变量 'group_name' 的路由)。
可能吗?如果是,我该怎么做?谢谢
用户 artisan 列出应用程序的所有路由
php artisan routes --name=admin
在Laravel 5
php artisan route:list --name=admin
在第一个参数中传递给组的属性存储在路由上的action
数组中。可以通过路由上的 getAction()
方法访问该数组。因此,一旦您获得了路由对象的访问权限,您就可以根据此信息进行过滤。
$name = 'pages';
$routeCollection = Route::getRoutes(); // RouteCollection object
$routes = $routeCollection->getRoutes(); // array of route objects
$grouped_routes = array_filter($routes, function($route) use ($name) {
$action = $route->getAction();
if (isset($action['group_name'])) {
// for the first level groups, $action['group_name'] will be a string
// for nested groups, $action['group_name'] will be an array
if (is_array($action['group_name'])) {
return in_array($name, $action['group_name']);
} else {
return $action['group_name'] == $name;
}
}
return false;
});
// array containing the route objects in the 'pages' group
dd($grouped_routes);