私はLaravel 5.3を使用しています。私は複数のコントローラに、単一のルートで処理したいURLの束を持っています。Laravel 5.3複数のコントローラへの動的ルーティング
GET /admin/foo => [email protected]
GET /admin/foo/edit/1 => [email protected]($id)
GET /admin/bar => [email protected]
GET /admin/bar/edit/1 => [email protected]($id)
GET /admin/baz => [email protected]
GET /admin/baz/edit/1 => [email protected]($id)
etc.
Iは、コントローラが存在するかどうかを検出できるようにしたい、と(404を投げることができる)デフォルトコントローラ404またはルートを投げていない場合。
以下は私が今までに持っているものですが、私が何をしているのか分かりません。サービスコンテナを使用してコントローラをインスタンス化するべきではありませんか?私はこのような名前空間をハードコーディングする必要があるとは思わない。 idパラメータの扱いは簡単です。おそらく、私はこれらの2つのパターンまたは何かのための2つのルートを持つ必要がありますか?
Route::get('/admin/{entityType}/{action?}/{id?}', function ($entityType, $action = 'index', $id = null) {
$controllerClass = 'App\Http\Controllers\\' . ucfirst($entityType) . 'Controller';
$controller = new $controllerClass;
$route = app(\Illuminate\Routing\Route::class);
$container = app(\Illuminate\Container\Container::class);
return (new Illuminate\Routing\ControllerDispatcher($container))->dispatch($route, $controller, $action);
abort(404);
});