Laravel发送带有可选参数的查询字符串

时间:2018-06-27 07:44:08

标签: laravel routes laravel-5.6

我的路线设置为

Route::any('/{brand?}/{type?}/{city?}', 'SearchController@index')->name('search');

我想从控制器发送查询字符串(表格GET参数)

搜索后,我最终得到了它,但是它不能正常工作

return redirect()->route('search', [$brand->name, $type->name, 'search_model_from' => $request->search_model_from, 'search_model_to' => $request->search_model_to]);

返回

localhost:8000 / toyota / avalon / 2018?search_model_to = 2019

我想回来

localhost:8000 / toyota / avalon /?search_model_from = 2018&search_model_to = 2019

我通常想要实现的是SEO友好搜索功能

2 个答案:

答案 0 :(得分:2)

也许您应该尝试像这样将城市分配为null:

return redirect()->route('search', [
    'brand' => $brand->name, 'type' => $type->name, 
    'city' => '', 'search_model_from' => $request->search_model_from, 
    'search_model_to' => $request->search_model_to
]);

答案 1 :(得分:0)

我不确定,但是可能会发生,因为您在路由中定义了3个可选参数,并且当您仅发送其中两个时,这可能会将下一个(在本例中为“ search_model_from”)作为第三个参数网址。

也许,如果您在控制器中将可选参数强制转换并设置了默认值,就不会有麻烦了,像这样:

public function index(string $brand='', string $type='', string $city='' , $other_parameters)