我了解如何使用redirect()方法重定向用户,但此方法返回302代码,浏览器必须发出第二个HTTP请求。是否可以在内部将请求转发给其他控制器和操作?
我在中间件中执行此检查,因此我的句柄功能如下所示:
public function handle($request, Closure $next)
{
if (auth()->user->age <= 20) { //example
//internally forward the user to a different controller@action
}
return $next($request);
}
}
答案 0 :(得分:3)
您可以使用call
方法:
app()->call('App\Http\Controllers\ControllerName@funName')
或者
app('App\Http\Controllers\ControllerName')->funName();
所以你的中间件看起来像:
if (auth()->user->age <= 20) {
return app()->call('App\Http\Controllers\ControllerName@action');
}
答案 1 :(得分:-2)
您可以使用redirect()
这样的辅助方法:
public function handle($request, Closure $next)
{
if (auth()->user->age <= 20) { //example
return redirect()->route('some_route_name');
}
return $next($request);
}
在路线文件中,路线应定义为:
Route::get('users/age/', 'ExampleController@method_name')->name('some_route_name');
希望这有帮助!