我的路线设置为
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友好搜索功能
答案 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)