2017-07-25 87 views
0

我想爲我的網站設置一些漂亮的網址,但我的問題是我的GET參數並不總是被填滿。Laravel 5尼斯網址

比如我可以擁有所有這些不同的參數:

?brand=BMW&model=i8+m4&location=USA 
?brand=BMW&location=USA 
?brand=BMW+Audi 

但是我不太知道我是否應該爲所有不同的場景,我可以擁有或創建一個途徑,如果有任何其他方式有一些不錯的網址?

我在想它會是什麼樣子: /brand/BMW+Audi/location/USA/model/i8

但是,如果我必須爲每個場景創建路線,它可能會變得很長!

Route::get(/brand/{brand}) 
Route::get(/brand/{brand}/location/{location}) 
Route::get(/brand/{brand}/model/{model}/location/{location}) 
Route::GET(/location/{location})... 

否則,我也可以創建一些動態參數,如:

Route::get(/{param_1}/{value_1}) 
Route::get(/{param_1}/{value_1}/{param_2}/{value_2}) 
Route::get(/{param_1}/{value_1}/{param_2}/{value_2}/{param_3}/{value3}) 

有什麼想法?

+0

我認爲這是爲了某種搜索是嗎? 在這種情況下,我會走動態路由,因爲不是所有的參數都必須填寫,所以在這裏你可以只使用其中一個參數,然後在第一個參數之前添加/搜索。 – Anoxy

+0

是的,但比這更復雜一點 - 這是一個1頁的應用程序,用一些apis動態刷新內容,但更新url而不重新加載頁面。 – Andrew

+0

你可能會檢查本教程關於laravel crud。 https://scotch.io/tutorials/simple-laravel-crud-with-resource-controllers –

回答

1

我認爲獲取參數是一個完美的解決方案。但是,如果你要「漂亮網址」你可以這樣做:

Route::get('/brands/{brand}', '[email protected]'); 
Route::get('/brands/{brand}/{model}', '[email protected]'); 
Route::get('/brands/{brand}/{model}/{location}', '[email protected]'); 

,然後在BrandController:

public function search($brand, $model = null, $location = null) 
{ 
    // 
} 

這樣的$model$location或可選的。您也可以選擇$brand$brand = null。但是,路線現在至少需要一個參數。希望這可以幫助你。

+0

感謝您的反饋,但我不明白在您的示例中,如果我只有:/ brands/{brand} /{位置}。它會認爲我的位置實際上是我的模型。 這就是爲什麼我認爲動態參數可能是一個更好的選擇,然後 – Andrew

+0

我不認爲你可以解決這個問題沒有命名參數。所以你畢竟需要GET參數。 –

+0

是的,我認爲你是對的。我嘗試在我的路線動態參數,但它似乎直接進入我的錯誤頁面。謝謝! – Andrew