【发布时间】:2016-03-01 02:31:09
【问题描述】:
我有复杂的路线系统,有一个简短的例子:
Route::group(['domain' => '{country}'], function () {
Route::get('/{category}/{brand}/{Gender?}-{FrameShape?}-{FrameType?}-{FrameColor?}-{LenseColor?}-{PriceRange?}-{FrameMaterial?}-{LensMaterial?}-{TryOn?}-{View360?}-{FastShipping?}-{SortBy?}-{Page?}-{Clearance?}-{NewArrival?}-{Size?}-{Prescription?}-{Polarized?}-{AsianFit?}', 'BrandController@index')
->name('brand');
});
这是过滤页面,可能有很多参数。例如用户可以打开这个网址:
http://site_us.com/glasses/Adidas/Women------------------
表示用户打开美国域(网站有很多国家),类别“眼镜”,品牌“阿迪达斯”,过滤器中的性别是女性。在此页面上,我正在尝试生成新的 URL,例如性别是男性,写这样的东西:
route('brand', ['Gender' => 'Men']);
// result: http://Men/------------------
因此,系统丢失了国家域、类别、品牌,甚至是斜线。我希望系统已经知道当前的参数,我只需要传递更改的参数并拥有漂亮的代码。
这样做的正确方法是什么?
【问题讨论】:
-
与其为此创建一个完整的 URL,为什么不只是有一个搜索 URL,然后附加一个查询字符串呢?即
http://site_us.com/glasses?brand=Adidas&gender=Women,然后您可以将它们拉入您的控制器并使用过滤器查询一些结果。 -
@James,我必须为非常旧的系统重写框架。因此,它应该是 laravel,但使用旧 URL。我知道这是一个奇怪的系统,但它不是我开发的。
-
@James,这不是重点,我们可以忘记过滤器。重点是 - 如何生成简短而美观的 URL,只需发送更改的参数。