在Laravel 4中向路由传递多个可选参数

6

我需要构建像这样的URL:

http://www.example.com/param1/param2/param3/.../paramN

在搜索页面中,用户可以通过任何可能的选项进行搜索,因此在Laravel中创建类似的URL应该如下:

Route::get('{param1?}/{param2?}/{param3?}/.../{paramN?}', array( ... ) );

还有其他方法吗?或者将/作为参数的一部分传递,可以实现以下效果:

low_range-1000/high_range-5000/weight-2/height-4/red/

那么上面的行就成为路由的一个参数。

需要帮助吗?

2个回答

7

好的,我找到了解决方案。为了节省其他人的时间。

Route::get('{param1}/{param2?}', array( ... ) )->where('param2', '.*');

这个路由需要param1作为必需参数,以及param2作为可选参数,其中包含任何字符,包括/

因此,我可以将 low_range-1000/high_range-5000/weight-2/height-4/red/ 作为param2传递。


1
我在我的URL中也做了类似的事情,但是我使用逗号来分隔搜索参数,并使用冒号来分隔键值对。
low-range:1000,high-range:5000,weight:2,height:4,color:red

我认为这样更清晰,而且您不需要在URL中允许所有内容或者修改参数来允许/。

另外,由于SEO的目的,URL中有太多/被认为是一种不良做法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接