Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-使用可选参数重定向到路由_Php_Laravel_Routing_Routes - Fatal编程技术网

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