Php Laravel-使用可选参数重定向到路由
我有这条路线:Php Laravel-使用可选参数重定向到路由,php,laravel,routing,routes,Php,Laravel,Routing,Routes,我有这条路线: 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('stat
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
}
公共函数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=数组(
'state'=>$state,
“城市”=>$city,
“品牌”=>$make,
'model'=>$model,
);
return Redirect::route('search-cars',$data);//在我看来,问题似乎是null
值。您可以使用array\u filter
删除这些值,然后将数据传递给重定向函数,而不是作为关联数组,而是作为值(因此它们将按顺序解决,而不是按参数名称解决)
你的代码看起来不错。如果数组中的参数为null,你是否尝试过不将其包含在数组中?另外,匹配函数签名中的参数名称。这个解决方案有什么问题?@facudofarias和lukasgeiter…调用postHomeSearch()时,我得到了这个URL--注意三元组///在我看来,一些null
值是问题所在。如果只设置了品牌
,你希望得到什么URL?@lukasgeiter我希望localhost/laravel/App/public/search/brandName,或者如果还设置了for expample city,那么localhost/laravel/App/public/search/brandName/CityGlad。我还建议你将路由中的参数名称更改为{a?}/{b?}
。这将更清楚地表明{state?}
实际上不必是状态。。。
$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);