2017-06-14 50 views
0

我正在寻找一种方式来处理Laravel中表单提交后的重定向。我的控制器方法(存储/更新)有此线在端部:

return redirect()->route('admin.templates.edit', ['id' => $template->id]); 

我想拦截此重定向(如果不可能性),并返回一个JSON消息,如果表格是通过AJAX提交:

现在我必须在每一个方法写:

if (request()->ajax()) { 
    return [ 
     'redirect' => route('admin.templates.edit', ['id' => $template->id]) 
    ]; 
} 
return redirect()->route('admin.templates.edit', ['id' => $template->id]); 

是否有写的“正常”的重定向和一个JSON封装如果请求通过AJAX提交的方式?也许用中间件?

回答

0

使用中间件,你需要拦截Ajax请求的所有路由都可以使用的代码几乎完全一样,你有它:

if (request()->ajax()) { 
return [ 
    'redirect' => route('admin.templates.edit', ['id' => $template->id]) 
]; 
} 

return redirect()->route('admin.templates.edit', ['id' => $template->id]); 

,并从中间件采取相应的行动。

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @param string|null $guard 
* @return mixed 
*/ 
public function handle($request, Closure $next, $guard = null) 
{ 
    if (request()->ajax()) { 
     return response()->redirect(route('admin.templates.edit', ['id' => $template->id])); 
    } 
    return $next($request); 
}