Laravel 5.1:如何正确生成URL?

时间:2016-03-01 02:31:09

标签: php laravel routes

我有复杂的路线系统,有简短的例子:

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');
});

这是过滤页面,可能有很多参数。例如,用户可以打开此URL:

http://site_us.com/glasses/Adidas/Women------------------

这意味着用户打开美国域名(网站有很多国家/地区),类别"眼镜",品牌"阿迪达斯",过滤器性别是女性。在此页面上,我尝试生成新的网址,例如性别是男人,写下这样的东西:

route('brand', ['Gender' => 'Men']);
// result: http://Men/------------------

因此,系统失去了国家域名,类别,品牌,甚至是斜线。我希望系统已经知道当前参数,我只需要传递更改的参数并拥有漂亮的代码。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

"我希望系统已经知道当前的参数,我只需要传递更改的参数并拥有漂亮的代码。"

系统确实知道参数,但它不知道的是,您是否要重用它们。

您可以显式传递以下参数:

route('brand', [
    'category'  => 'your_category',
    'brand'     => 'your_brand',
    'Gender' => 'Men'
]);

或来自请求参数:

route('brand', [
    'category'  => app('request')->category, // using app() helper to resolve dependency in View
    'brand'     => app('request')->brand,
    'Gender' => 'Men'
]);

但请记住 - 这只是回答问题的直接解决方案,而不是我推荐的内容。