2017-11-20 25 views
1

私は2つのパラメータで(現実世界で)定義されたリソースを持っています。私はそれを指し、これとルートのコントローラを作成することができます知っている2つの引数を持つリソースコントローラ

/cars/{model}/{make} 

を、私はでこれを行う方法を見つけ出すことはできません。次のように私は、リソースにアクセスたい:の車-アナロジーを見てみましょうリソース・ルート:これは唯一のパラメータでルートを作成する

Route::resource('/cars', 'CarController'); 

GET/HEAD cars   App\Http\Controllers\[email protected] 
POST  cars   App\Http\Controllers\[email protected] 
GET/HEAD cars/new  App\Http\Controllers\[email protected] 
GET/HEAD cars/{car}  App\Http\Controllers\[email protected] 
PUT/PATCH cars/{car}  App\Http\Controllers\[email protected] 
DELETE cars/{car}  App\Http\Controllers\[email protected] 
GET/HEAD cars/{car}/edit App\Http\Controllers\[email protected] 

{car}パラメータは、データベースキーを参照しています。

{make}{model}の2つのパラメータを使用してリソースルートを作成することはできますか?

すべてのルートを手動で作成する必要がありますか?

私はLaravel 5.5を使用しています。

明確にするために、私はで終わるしたいと思います:

GET/HEAD cars      App\Http\Controllers\[email protected] 
POST  cars      App\Http\Controllers\[email protected] 
GET/HEAD cars/new     App\Http\Controllers\[email protected] 
GET/HEAD cars/{make}/{model}  App\Http\Controllers\[email protected] 
PUT/PATCH cars/{make}/{model}  App\Http\Controllers\[email protected] 
DELETE cars/{make}/{model}  App\Http\Controllers\[email protected] 
GET/HEAD cars/{make}/{model}/edit App\Http\Controllers\[email protected] 

(例えば)edit関数は、次にようになります。

public function edit(string $make, string $model) { 
    // sort out DB entry and provide it to a view 
} 
+0

はたぶん、あなたは車に対応するメイク、モデルの組み合わせを検索する形質を追加することができますか? –

+0

モデルを調べることはここで問題ではありません。それは、(ユーザーフレンドリーな)URLからコントローラーにパラメーターを渡すことです。 –

+0

私はそれを理解していますが、追加のパラメータ宣言を7回入力する必要はないので(これが唯一のコントローラであれば、これはまったく問題ありません)、このために再利用できる関数を作成できます状況は私が言っているすべてです。 –

答えて

0

リソースルーティングはなりたくありません。このように設定します。ネストされたリソースを実行することはできますが、それでもそこにあるパラメータの間にセグメントが追加されます。

自分でルートを定義します。 Route::resourceは7つのルートを登録するだけで、いつでも自分自身を明示的に登録することができます。

最も近い私が得ることができます。

Route::resource('cars.model', 'CarsController', [ 
    'parameters' => ['cars' => 'make'] 
]); 

cars/{make}/model/{model} 
+0

ドキュメントにはやり方が示されていません彼らは明示的にはうまくいかないと言っていません。これを見て、手動ルートが必要であるとの私の期待を確認します。ありがとう。誰か他の何かが出てこない限り、あなたは私の投票権を持っています... –

+0

はい、ドキュメントはあなた自身の 'ResourceRegistrar'を作成してリソースルートを登録するときに望むどんな形式のuri 。 – lagbox

+0

入れ子にされたリソースは、実際に余分なセグメントのために移動する方法ではありません。 'ResourceRegistrar'を拡張することは、このプロジェクトだけで学習曲線が険しくなるように思えます。特に、正確にどこに展開し、どこから始めるべきかについてのドキュメントやポインタが見つからないからです。私は7つのルート宣言に行き、なぜそれが1つのリソース宣言ではないかについてのコメントを追加します。 –

関連する問題