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

我正在构建这个网站,我想将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”:”Missing argument 1 for SearchController::locations()”,”file”:”C:\wamp\www\localsite\app\controllers\SearchController.php”,”line”:5}}

先感谢您

最佳答案 你正在混合get参数和路由变量..你在这条路线后最终得到的东西就像搜索/位置/搜索/其中第二次搜索作为参数传递并分配给$src

选项1
使用当前路由,您可以执行search / locations / parameter1,以便将parameter1传递给$src

方案2
或者如果您需要更改路线以跟踪位置/ search / parameter1,您的路线应如下所示:

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

然后你可以使用locations / search / parameter1

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

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

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

和你的控制器:

class SearchController extends BaseController {

    public function locations()
    {
        $src = Input::get('q');
        return json_encode($src);
    }

}

注意
如果要在路由上使$src可选,请确保更改行公共函数位置($src)=>公共功能位置($src = null)

点赞