私は現在LaravelでバニラPHP-Appを再構築していますが、私は以下の問題があります。 私は、単語のカテゴリ(名詞、動詞、副詞、...)を表す複数のデータベーステーブルを持っています。テーブルごとに、私は別々のモデル、route :: resourceと別個のリソースコントローラを作成しました。たとえば、次のようにLaravel:複数のモデル用に1つのコントローラ
NomenController.php基本的にモデルクラス以外は同じです
public function show($id)
{
$vocab = Nomen::find($id);
return view('glossarium.vocab_update', compact('vocab'));
}
と
VerbController.php
public function show($id)
{
$vocab = Verb::find($id);
return view('glossarium.vocab_update', compact('vocab'));
}
...。
モデルごとに別々のコントローラを作成する必要はありませんが、まったく同じです。これを解決する最もシンプルでエレガントな方法は何でしょうか? 私はちょうどVocabController.phpを作成し、同様にモデル名のためのパラメータを追加する必要がありますがあれば、私は疑問に思う
Route::resource('/vocab/{category}', 'VocabController');
、その後
public function __construct ($category) {
if ($category == 'nomen') {
$this->vocab = App\Nomen;
}
else if ($category == 'verb') {
$this->vocab = App\Verb;
}
}
のように、このコントローラでコンストラクタメソッドを追加それを行う簡単な方法。ルートモデルバインドでこれをどうしようもできますか?事前
あなたは動作する方法を提案しましたが、名詞/動詞などが継承する "Vocab"モデルを作成することをお勧めします。次に、あなたのvocabコントローラが必要です。 – Samsquanch