警告:将参数从url传递到控制器(laravel)时缺少参数1

时间:2013-12-02 19:31:59

标签: php laravel-4

我正在构建这个网站,我想将url参数传递给路由,并从路由传递到控制器,我搜索了文档和谷歌,但我找不到解决问题的方法

这是一个示例网址

locations/search?q=parameter1

我现在的路线是这样的:

Route::group(array('prefix'=>'search'),function()
{
    Route::get('locations/{src?}','SearchController@locations',function($src = null){});
});

我的控制器看起来像这样:

    class SearchController extends BaseController {

    public function locations($src)
    {
        return json_encode($src);
    }

}

我想知道的是如何将参数传递给控制器​​,我现在的代码现在返回此错误

  

{“error”:{“type”:“ErrorException”,“message”:“缺少SearchController :: locations()的参数1”,“file”:“C:\ wamp \ www \ localsite \ app \控制器\ SearchController.php”, “行”:5}}

提前谢谢

1 个答案:

答案 0 :(得分:2)

您正在混合get参数和路由变量..在该路由之后您最终得到的是search/locations/search/,其中第二个search作为参数传递并分配给{{ 1}}

选项1
使用当前路线,$src可以将参数1传递给search/locations/parameter1

选项2
或者如果您需要更改路线以跟随$src,您的路线应该是这样的:

locations/search/parameter1

然后您可以使用Route::group(array('prefix'=>'locations'),function() { Route::get('search/{src?}','SearchController@locations', function($src = null){ }); });

但是如果你坚持使用get参数(locations / search?q = parameter1) ..

选项3
您的路线应该是这样的:

locations/search/parameter1

和您的控制人员:

Route::group(array('prefix'=>'locations'),function()
{
    Route::get('search','SearchController@locations');
});

注意 如果您要在路线上选择$ src,请务必更改行class SearchController extends BaseController { public function locations() { $src = Input::get('q'); return json_encode($src); } } => public function locations($src)