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');
。
所以我必须制作这个运输管理系统。用户可以登录 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');
。