私は Laravel が好きですが、ORM は好きではなく、もっと速度が必要なので、Lumen を使用しています。しかし、自分のコードを Lumen に移植したところ、ミドルウェアでできることがいくつか変わったことがわかりました...
ミドルウェアを使用して、リクエストに基づいて呼び出されるコントローラーメソッドを変更することにより、ajax リクエストをより「落ち着いた」ものにするのが好きです。Laravel 5で行ったことは次のとおりです。
public function handle($request, Closure $next)
{
if($request->ajax() && $request->input("ajax")){
// Controller methods like: ajaxEdit, ajaxUpdate, ajaxDelete...
$ajaxMethod = "ajax".studly_case($request->input("ajax"));
// Get the route's action
$routeAction = $request->route()->getAction();
// Replace index method call with ajax method
$routeAction['uses'] = str_replace("@index", "@".$ajaxMethod, $routeAction['uses']);
$routeAction['controller'] = str_replace("@index", "@".$ajaxMethod, $routeAction['controller']);
// Update the route's action
$request->route()->setAction($routeAction);
}
// Now controller->ajaxWhatever will be called instead of controller->index
return $next($request);
}
Lumen で利用できないことgetAction
に気付きました。setAction
Lumen で同様のことを達成するにはどうすればよいですか?