2016-07-08 10 views
0

私は興味深いURLの質問を得ました。興味深いLaravelのルーティングURLの問題

これは私の状況です。私はユーザーが人口が多いデータベースになるので、私はいくつのサブエリアがあるのか​​分からない。

私はいつも1つまたは、さらにのサブエリア、および私のURLを終了する場所を持っています。

例:/エリア/ subarea1/subarea2 /場所

これは少し私が必要なものから簡略化されています。私は次のURLにもサービスできるようにする必要があります。

/エリア/ subarea1 /場所

/エリア/ subarea1/subarea2/subarea3 /場所)

マイルートを次のようになります:

Route::get('area/{subarea1}', '[email protected]'); 
Route::get('area/{subarea1}/{location}', '[email protected]'); 
Route::get('area/{subarea1}/{subarea2}', '[email protected]'); 
Route::get('area/{subarea1}/{subarea2}/{location}', '[email protected]'); 

をので、ここでの問題は、私ですルートは本質的に同じであるため、相互に優先されます。

私の質問はこれです。同じURL構造を持つ場合、これらの経路を区別する方法はありますか?そうでない場合は、エリアと場所の間に複数のサブエリアを処理するより良い方法がありますか? [OK]を

EDIT

私は私のルートを命名する試みがなされてきたが、私は、ビュー内のすべての私のパラメータを正しく命名ルートを使用することができるように見えることはできません。私はむしろ長いURLを持っていなくても、領域/ {subarea1}/subarea1/{subarea2}/subarea2の解を調べるかもしれません。

+0

あなたのルートの名前はどうですか? –

答えて

2

これは、Laravelが各ルートと他のルートを区別する方法がないために発生します。たとえば、次の2つのURLを同じアクションにルーティングします。

example.com/area/my-subarea-1/my-location 
example.com/area/my-subarea-1/my-subarea-2 

異なるパスが必要です。試してみてください:

Route::get('area/subarea1/{subarea1}', '[email protected]'); 
Route::get('area/subarea1/{subarea1}/location/{location}', '[email protected]'); 
Route::get('area/subarea1/{subarea1}/subarea2/{subarea2}', '[email protected]'); 
Route::get('area/subarea1/{subarea1}/subarea2/{subarea2}/location/{location}', '[email protected]'); 
+0

ありがとうございます、この解決策は動作しているようです。私は後で戻って、名前が付けられたルーティングソリューションを試して、現在のフォームではかなり扱いにくいように、私が小さなURLを得ることができるかどうかを調べるかもしれません。 – Aptorian

+0

ルートの命名はいつでも変更することを心配することなくアプリ全体のルートを参照するのに役立ちますが、この特定の問題は解決しませんので、ルートの命名は常に推奨されます。 URLはまだ同じで、お互いを上書きします。 – rzb

関連する問題