Laravel admin/user 路由前缀方式

Laravel admin/user route prefix approach

所以我必须制作这个运输管理系统。用户可以登录 create/update/edit 他的所有行程。但是管理员可以为所有用户做同样的事情。我已将用户和管理员划分为路由前缀:

Route::group(['prefix' => 'admin/', 'middleware' => ['auth','admin']], function(){
Route::resource('trips', 'TripsController',
        array('except' => array('show')));}

Route::group(['prefix' => 'user/', 'middleware' => ['auth', 'user']], function(){

Route::resource('trips', 'TripsController',
        array('except' => array('show')));
}

问题出在 TripController 的每个方法中,我必须使用正确的 url 传递路由变量(管理请求将具有 'admin' 前缀,用户将具有 'user' 前缀)

return View('trips.index', compact('users', 'route'));

问题是有没有办法很好地做到这一点,或者我是否应该将行程 Route::resource 从两个组中拉出来,这样就不会有任何组?这里正确的方法是什么?

我使用这种方法:

Route::group(['namespace' => 'Admin', 'as' => 'admin::', 'prefix' => 'admin'], function() {

    // For Other middlewares

    Route::group(['middleware' => 'IsNotAuthenticated'], function(){

        // "admin::login"
        // http://localhost:8000/admin/login
        Route::get('login', ['as' => 'login', 'uses' => 'AdminController@index']);

    });


    // For admin middlewares
    Route::group(['middleware' => 'admin'], function(){

        // "admin::admin.area.index"
        // http://localhost:8000/admin/area/{area}
        Route::resource('Area', 'AreaController');

        // "admin::dashboard"       
        // http://localhost:8000/admin/
        Route::get('/', ['as' => 'dashboard', 'uses' => 'AdminController@dashboard']);

    });

});

每当我需要访问 blade 模板中的 url 时,我只需使用路由辅助方法。

// For resourceful routes    

{{ route('admin::admin.city.index') }}

//For regular get/post routes 

{{ route('admin::dashboard') }}

或者简单地使用 运行 artisan 命令来列出路由名称。

php artisan route:list

我是这样做的:

//Admin Group&NameSpace
Route::namespace('Admin')->prefix('admin')->group(function () {
    Route::get('/dashboard', 'DashboardController@index')->name('dashboard')->middleware('auth');
});

您甚至可以使用基于自定义中间件角色的自定义 ->middleware('auth');