2016-07-08 119 views
0

我得到了(對我來說)一個有趣的url問題。有趣的Laravel路由URL問題

這是我的情況。我有什麼將是一個用戶填充數據庫,所以我不能確定我會有多少個子區域。

我將永遠有一個區域,一個或更多子區域以及結束我的網址的位置。

例如:

這稍微從什麼,我需要簡化/區域/ subarea1/subarea2 /位置。我需要能夠爲以下網址提供服務;

/區域/ 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]'); 

所以這裏的問題是,我路線相互覆蓋,因爲它們本質上是相同的。

我的問題是這樣的。有什麼辦法來區分這些路線時,他們有相同的網址結構?如果沒有,是否有更好的方法來處理一個地區和一個地點之間的多個分區?

編輯

好吧,我一直在嘗試命名我的路線,但我似乎無法能夠與我的視圖中的所有參數正確地使用命名路由。我可能會查看區域/ {subarea1}/subarea1/{subarea2}/subarea2解決方案,即使我不想使用更長的URL。

+0

有關命名的路線是什麼? –

回答

2

這是因爲Laravel沒有辦法區分其他每個路由。例如,它會將這兩個網址路由到相同的操作:

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

始終建議命名路由,因爲它可以幫助您在整個應用中引用路由,而不用擔心它們有一天會被更改,但它不會解決此特定問題。該網址將仍然是相同的,並相互覆蓋。 – rzb