【问题标题】:Laravel routes same url different controllersLaravel 路由相同的 url 不同的控制器
【发布时间】:2017-04-05 14:13:47
【问题描述】:

在我的 Laravel 应用程序中,我有不同的角色(用户、经理、管理员)。

我想知道为每个用户管理主页的最佳做法,这意味着我想使用相同的 url 但不同的视图。

好像不能直接在Routes里面做:

Route::group(['middleware' => 'auth:user'], function () {
    $u = 'user.';
    Route::get('/', ['as' => $u . 'home', 'uses' => 'UserController@getHome']);
});

Route::group(['middleware' => 'auth:manager'], function () {
    $m = 'manager.';
    Route::get('/', ['as' => $m . 'home', 'uses' => 'ManagerController@getHome']);
});

另一种方法是将所有人重定向到同一个控制器并在控制器内部显示不同的视图。

Route::group(['middleware' => 'auth:all'], function () {
        $a = 'authenticated.';
        Route::get('/', ['as' => $a . 'home', 'uses' => 'HomeController@getHome']);
    });

但是,如果您必须管理 2 个以上的角色,这会变得非常烦人...

最后一个选项是在 Routes 中设置一些条件,例如:

Route::group(['middleware' => 'auth:all'], function () {
            if (Auth::user()->hasRole('user)'{
            Route::get('/', ['as' => $a . 'home', 'uses' => 'UserController@getHome']);
    } else {
Route::get('/', ['as' => $a . 'home', 'uses' => 'ManagerController@getHome']);
}
        });

非常感谢

【问题讨论】:

    标签: laravel routes middleware


    【解决方案1】:

    我不会为我推荐在路由本身中具有不同角色的不同视图,最好的方法是创建处理所有首页请求的控制器,例如 egFrontPageController.blade.php 并根据用户返回视图并确保您管理如果整个页面看起来彼此不同,则根据用户角色查看目录结构,例如 resources/views/product/admin/view

    resources/views/product/user/view
    resources/views/product/manager/view
    

    如果模板文件中的大多数元素都相同,我会建议您选择门

    【讨论】:

    • 如果这解决了您的问题标记作为其他人的答案,我也会提供帮助。
    猜你喜欢
    • 2013-09-24
    • 2016-03-29
    • 2016-10-03
    • 2018-12-12
    • 2016-03-03
    • 2021-05-26
    • 2021-05-29
    • 2018-02-18
    • 2015-09-15
    相关资源
    最近更新 更多