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

Php 警告:从url向控制器(laravel)传递参数时缺少参数1,php,laravel-4,Php,Laravel 4,我正在建设这个网站,我想把url参数传递给路由和从路由到控制器,我已经搜索了文档和谷歌,但我找不到解决我的问题的方法 这是一个示例url locations/search?q=parameter1 我现在的路线是这样的: Route::group(array('prefix'=>'search'),function() { Route::get('locations/{src?}','SearchController@locations',function($src = null

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

这是一个示例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);
    }

}
Route::group(array('prefix'=>'locations'),function()
{
    Route::get('search/{src?}','SearchController@locations',
        function($src = null){
    });
});
Route::group(array('prefix'=>'locations'),function()
{
    Route::get('search','SearchController@locations');
});
我的控制器如下所示:

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

}
Route::group(array('prefix'=>'locations'),function()
{
    Route::get('search/{src?}','SearchController@locations',
        function($src = null){
    });
});
Route::group(array('prefix'=>'locations'),function()
{
    Route::get('search','SearchController@locations');
});
我想知道的是如何将参数传递给控制器,我现在的代码返回这个错误

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


提前感谢您

您正在混合get参数和路由变量。。在该路径之后,您将得到类似于
search/locations/search/
的结果,其中第二个
search
作为参数传递并分配给
$src

选项1
对于当前路线,您可以做的是
搜索/locations/parameter1
,以便将参数1传递到
$src

选项2
或者如果您需要更改路线以遵循
位置/search/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);
    }

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

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

选项3
您的路线应如下所示:

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

}
Route::group(array('prefix'=>'locations'),function()
{
    Route::get('search/{src?}','SearchController@locations',
        function($src = null){
    });
});
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)