2017-07-25 80 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