【问题标题】:Laravel admin/user route prefix approachLaravel 管理员/用户路由前缀方法
【发布时间】:2016-04-21 16:29:55
【问题描述】:

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

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

问题是有一种方法可以很好地做到这一点,还是我应该将 trips Route::resource 从两个组中拉出来,这样它就不会有任何组?这里的正确方法是什么?

【问题讨论】:

    标签: laravel routes prefix


    【解决方案1】:

    我是这样做的:

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

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

    【讨论】:

      【解决方案2】:

      我使用这种方法:

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

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

      // For resourceful routes    
      
      {{ route('admin::admin.city.index') }}
      

      //For regular get/post routes 
      
      {{ route('admin::dashboard') }}
      

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

      php artisan route:list
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-05
        • 1970-01-01
        • 2015-11-09
        • 2018-09-21
        • 2017-12-31
        • 2015-12-24
        • 2014-09-05
        • 1970-01-01
        相关资源
        最近更新 更多