Laravel 路线相同 url 不同的控制器
Laravel routes same url different controllers
在我的 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 个以上的角色,这会变得很烦人...
最后一个选项是在路由中设置一些条件,例如:
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']);
}
});
非常感谢
我不会为我推荐在路由本身中具有不同角色的不同视图,最好的方法是创建处理所有首页请求的控制器,例如 FrontPageController.blade.php
和 return 视图根据用户并确保您根据用户角色管理视图目录结构,如果整个页面看起来彼此不同,例如 resources/views/product/admin/view
resources/views/product/user/view
resources/views/product/manager/view
如果模板文件的大部分元素相同,我建议您选择 gates
在我的 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 个以上的角色,这会变得很烦人...
最后一个选项是在路由中设置一些条件,例如:
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']);
}
});
非常感谢
我不会为我推荐在路由本身中具有不同角色的不同视图,最好的方法是创建处理所有首页请求的控制器,例如 FrontPageController.blade.php
和 return 视图根据用户并确保您根据用户角色管理视图目录结构,如果整个页面看起来彼此不同,例如 resources/views/product/admin/view
resources/views/product/user/view
resources/views/product/manager/view
如果模板文件的大部分元素相同,我建议您选择 gates