2015-04-29 6 views
1

В Laravel я знаю, что могу получить все маршруты с помощью `Route :: getRoutes(), но я не могу найти, можно ли получить список всех маршрутов, содержащихся в указанном группа.Laravel 4 как получить маршруты по названию группы

Например, у меня есть этот маршрут файла:

Route::group(array('group_name' => 'pages'), function() { 
    Route::any('/authentication', array('as' => 'authentication', 'uses' => '[email protected]')); 
    Route::group(array('before' => 'auth_administration'), function() { 
     Route::any('/tags_category/index', array('as' => 'index-tags-categories', 'uses' => '[email protected]')); 
     Route::any('/tags_category/update', array('as' => 'update-tags-category', 'uses' => '[email protected]')); 
    }); 
}); 

Route::group(array('before' => 'auth_administration'), function() { 
    Route::any('/tags_category/store', array('as' => 'store-tags-category', 'uses' => '[email protected]')); 
    Route::any('/tags_category/update/{id}', array('as' => 'update-form-tags-category', 'uses' => '[email protected]')); 
    Route::any('/tags_category/delete/{id}', array('as' => 'delete-tags-category', 'uses' => '[email protected]')); 
}); // operazioni protette 

и в моем контроллер я хочу получить только маршруты, содержащиеся в первой группе (тот, с переменной «имя_группы»).

Возможно ли это? Если да, то как я могу это сделать? Благодаря

ответ

2

Атрибуты, передаваемые в группе в первом параметре хранятся на маршруте в 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); 
+0

Отлично! Благодаря! – topogigio

-1

ремесленник Пользователь перечислить все маршруты для применения

php artisan routes --name=admin 

в Laravel 5

php artisan route:list --name=admin