我正在构建这个网站,我想将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)