我正在构建这个网站,我想将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}}
提前谢谢
答案 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)