Laravel - 使用可选参数重定向到路由
Laravel - Redirect to route with optional parameters
我有这条路线:
Route::get('search/{state?}/{city?}/{brand?}/{model?}', array('as'=>'search-cars'), function($a=false, $b=false, $c=false, $d=false) {
// Do stuff
}
如何从我的控制器向上面的路由发送参数?我试过:
public function postHomeSearch() {
$state= (Input::get('state')) ? Input::get('state') : null;
$city = (Input::get('city')) ? Input::get('city') : null;
$brand= (Input::get('brand')) ? Input::get('brand') : null;
$model= (Input::get('model')) ? Input::get('model') : null;
$data = array(
'state' => $state,
'city' => $city,
'brand' => $make,
'model' => $model,
);
return Redirect::route('search-cars',$data); // <---- HERE
}
请注意,如果未选择某些参数,则它们可能为空
在我看来问题是 null
值。您可以使用 array_filter
删除那些,然后将数据传递给重定向函数,而不是作为关联数组,而是作为值(因此它们将按顺序解析,而不是按参数名称解析)
$data = Input::only('state', 'city', 'brand', 'model');
$data = array_filter($data); // remove falsy values
$data = array_values($data); // remove keys
return Redirect::route('search-cars', $data);
我有这条路线:
Route::get('search/{state?}/{city?}/{brand?}/{model?}', array('as'=>'search-cars'), function($a=false, $b=false, $c=false, $d=false) {
// Do stuff
}
如何从我的控制器向上面的路由发送参数?我试过:
public function postHomeSearch() {
$state= (Input::get('state')) ? Input::get('state') : null;
$city = (Input::get('city')) ? Input::get('city') : null;
$brand= (Input::get('brand')) ? Input::get('brand') : null;
$model= (Input::get('model')) ? Input::get('model') : null;
$data = array(
'state' => $state,
'city' => $city,
'brand' => $make,
'model' => $model,
);
return Redirect::route('search-cars',$data); // <---- HERE
}
请注意,如果未选择某些参数,则它们可能为空
在我看来问题是 null
值。您可以使用 array_filter
删除那些,然后将数据传递给重定向函数,而不是作为关联数组,而是作为值(因此它们将按顺序解析,而不是按参数名称解析)
$data = Input::only('state', 'city', 'brand', 'model');
$data = array_filter($data); // remove falsy values
$data = array_values($data); // remove keys
return Redirect::route('search-cars', $data);