我希望根据用户类型将相同的路由路由到不同的控制器。
如
if (Auth::check() && Auth::user()->is_admin) {
Route::get('/profile', 'AdminController@show');
} elseif (Auth::check() && Auth::user()->is_superadmin) {
Route::get('/profile', 'SuperAdminController@show');
}
但这不起作用。
我怎样才能让它像我想要的那样工作?
答案 0 :(得分:4)
你可以这样做
Route::get('/profile', 'HomeController@profile'); // another route
<强>控制器强>
public function profile() {
if (Auth::check() && Auth::user()->is_admin) {
$test = app('App\Http\Controllers\AdminController')->getshow();
}
elseif (Auth::check() && Auth::user()->is_superadmin) {
$test = app('App\Http\Controllers\SuperAdminController')->getshow();
// this must not return a view but it will return just the needed data , you can pass parameters like this `->getshow($param1,$param2)`
}
return View('profile')->with('data', $test);
}
但我觉得使用特质更好
trait Show {
public function showadmin() {
.....
}
public function showuser() {
.....
}
}
然后
class HomeController extends Controller {
use Show;
}
然后你可以像上面那样做,而不是
$test = app('App\Http\Controllers\AdminController')->getshow();// or the other one
使用此
$this->showadmin();
$this->showuser(); // and use If statment ofc
答案 1 :(得分:1)
okey你可以通过创建route::group
您的路线组将是那样的
route::group(['prefix'=>'yourPrefix','middleware'=>'yourMiddleware'],function(){
if (Auth::check() && Auth::user()->is_admin)
{
Route::get('profile', 'AdminController@show');
}
else
{
Route::get('profile', 'SuperAdminController@show');
}
});
我希望这会对你有帮助。