我有一个购物车,我希望能够传递可变数量的可选参数。诸如:排序、过滤、包含/排除等。所以 URL 可能是:
/products
/products/sort/alphabetically
/products/filter/cloths
/products/socks/true
/products/sort/alphabetically/socks/true/hats/false/
等等。
我想我可以为所有可能的参数设置一个带有占位符的路由,并在 URL 中设置默认值,例如:
Route::get('products/sort/{$sort?}/filter/{$filter?}/socks/{$socks?}/hats/{$hats?}/...', function($sort = 'alphabetically', $filter = false, $socks = true, $hats = true, ...)
{
...
});
然后例如只排除帽子我必须有一个如下的网址:
/products/sort/alphabetically/filter/false/socks/true/hats/false
但这似乎真的……不优雅。有没有这样做的好方法?我想我也可以尝试编写一个服务器重写规则来解决这个问题,但我不喜欢绕过 Laravel 的想法。