2015-10-19 111 views
0

我在一個項目上使用Laravel 4.2。Laravel路線訂購

我已經安裝路線:

刺蛾類,服務

在訂貨方面,如果我提出上述蛞蝓服務,它不能找到鼻涕蟲,並最終進入到服務控制器和相同,如果我保持slug方法高於服務。它也無法找到。

我現在的路線如下:

Route::get('{slug?}', '[email protected]'); 
Route::get('{category?}', '[email protected]'); 
Route::get('{services?}', '[email protected]'); 

有沒有辦法解決這個問題,一個正常工作的類別,但切換蛞蝓和服務周圍產生了一個問題。

感謝

+1

這可能是因爲你的路由在理論上都一樣,你不能這樣做'/分類/ {類別}'或'/服務/ {服務}'。只是爲了測試?記住我是新來laravel大聲笑 –

+0

剛剛試過@AndyHolmes的服務,只是不起作用。它被路由到slu route路線 – StuBlackett

+1

您還必須首先放置最具體的路線,否則將應用更通用的路線,因爲'{slug?}'適用於字面上任何您傳遞的內容。 –

回答

2

他們的方式你寫的路線,Laravel有沒有辦法告訴哪個請求應該去哪個路線,因爲你寫了這可能是任何一個可選參數三條路線。 路由的工作方式是:它應用與模式匹配的第一條路由。這就是爲什麼當它遇到第一種路線模式,即「一個參數可以是任何東西」時,它會選擇該路線。

你應該給Laravel某種暗示,如:

Route::get('{slug?}', '[email protected]')->where('slug', '(blog|home|contact)'); 

Route::get('/category/{category?}', '[email protected]'); 

Route::get('/services/{services?}', '[email protected]'); 

如果你限制可能的值或者如果你把另外一部分的網址,Laravel將能夠識別哪條路線應該去哪個處理程序。

看看在docs獲得更多的想法

+0

謝謝!塞爾克和類別的工作,但服務仍然無法正常工作。我試過 - > where('slug','[A-Za-z] +');但沒有運氣! – StuBlackett

+0

'[A-Za-z] +'表示slug有大寫或小寫字母,且最小長度爲1。 –

+0

因此,如何獲取任何URL禁止類別和服務。去HomeController @索引文檔'unfortunatley沒有幫助。 – StuBlackett