Laravel管理员/用户路由前缀方法

时间:2016-01-16 00:02:29

标签: laravel routes prefix

因此我必须将此系统用于运输管理。用户可以登录创建/更新/编辑他的所有行程。但管理员可以为所有用户执行相同的操作。我将用户和管理员划分为路由前缀:

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&# 39;前缀)

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

问题是有一种方法可以很好地完成这项工作,还是应该将两个组中的Route :: resource拉出来,以便它不会有任何组?这里的正确方法是什么?

3 个答案:

答案 0 :(得分:2)

我使用这种方法:

2angular/
   tsconfig.json
   package.json
   index.html
   app/
      app.components.ts
      boot.ts

每当我需要访问刀片模板中的url时,我只需使用route helper方法。

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']);

    });

});

// For resourceful routes    

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

或者只需运行artisan命令列出路径名称。

//For regular get/post routes 

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

答案 1 :(得分:1)

我是这样做的:

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

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

答案 2 :(得分:0)

在您的web.php上

Route::prefix('/admin')->name('admin.')->namespace('admin')->group(function()
{ 
   //routes prefix with admin
     Route::get('/dashboard', 'AdminController@dashboard')->name('admindashboard');
   //its behave like
    Route::get('admin/dashboard', 'AdminController@dashboard')->name('admin.admindashboard')
});

现在在刀片文件上调用它

{{ route('admin.admindashboard') }}