【问题标题】:Laravel 4 how get routes by group nameLaravel 4如何按组名获取路线
【发布时间】:2015-07-08 13:57:50
【问题描述】:

在 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”的路由)。

有可能吗?如果是,我该怎么做?谢谢

【问题讨论】:

    标签: php laravel laravel-4 laravel-routing


    【解决方案1】:

    第一个参数中传递给组的属性存储在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);
    

    【讨论】:

      【解决方案2】:

      用户工匠列出应用程序的所有路由

      php artisan routes --name=admin
      

      在 Laravel 5 中

      php artisan route:list --name=admin
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-17
        • 2015-02-12
        • 2023-03-10
        • 2015-02-15
        • 1970-01-01
        • 2015-07-14
        • 2014-10-24
        相关资源
        最近更新 更多