Php Laravel-无法获取url获取参数
我在尝试向路由发出GET请求并处理通过URL传入的参数时遇到问题。下面是我在Php Laravel-无法获取url获取参数,php,laravel,laravel-routing,laravel-5,Php,Laravel,Laravel Routing,Laravel 5,我在尝试向路由发出GET请求并处理通过URL传入的参数时遇到问题。下面是我在routes.php中创建的两条路由: $router->get('/', function() { $test = \Input::get('id'); dd($test); }); $router->get('test', function() { $test = \Input::get('id'); dd($test); }); 当我转到第一个URL/route(“/
routes.php
中创建的两条路由:
$router->get('/', function() {
$test = \Input::get('id');
dd($test);
});
$router->get('test', function() {
$test = \Input::get('id');
dd($test);
});
当我转到第一个URL/route(“/”)并传入一些数据时,123会打印到屏幕上:
http://domain.com/dev/?id=123
当我转到第二个('test')时,NULL会打印到屏幕上(我也在routes.php
文件中尝试了'/test')
这里有几点需要注意:
- 此Laravel安装在子文件夹中
- 我们使用的是Laravel 5
你知道为什么一个可以工作而另一个不行吗?首先,Laravel 5仍在积极开发中,所以你现在不能太依赖它 第二件事是缓存和路由。您确定正在从此路由运行代码吗 将此代码更改为:
$router->get('/', function() {
$test = \Input::get('id');
var_dump($test);
echo "/ route";
});
$router->get('test', function() {
$test = \Input::get('id');
var_dump($test);
echo "test route";
});
以确保消息也出现。这是因为,如果您的注释具有相同的动词和URL,则将使用它们,而不是此处显示的路由,您可能会转储其他内容。我已经检查了它在新的Laravel 5安装,对我来说,它的作品很好。在这两种情况下,我都显示了id
值您可以使用
Request::path()
要检索请求URI,或者可以使用
Request::url()
获取当前请求URL。您可以在此处查看Laravel 5文档中的详细信息:完成这些过程后,您可以获取get参数并使用此函数:
function getRequestGET($url){
$parts = parse_url($url);
parse_str($parts['query'], $query);
return $query;
}
感谢@ruel提供此功能,回答如下:请尝试以下方法:
Route::get('/{urlParameter}', function($urlParameter)
{
echo $urlParameter;
});
转到URL/route(“/ArtisBay”):
希望这会有帮助。那么,您用来测试第二条路线的url是什么?@DamienPirsy
http://domain.com/dev/test?id=123
。我将此添加到问题中代码>向您显示?@ceejayoz第一个路由('/')显示数组(1){[“id”]=>string(3)“123”}
,第二个('/test')显示数组(1){[“test”]=>string(0)”}
。据我所知,这对于restful路由应该是正确的。我不明白为什么第一个会for,第二个会忽略$\u GET参数。嗯……请注意,您编写了['test']=>字符串….
,这表明您使用的是\Input::GET('test')
,而不是\Input::GET('id')
。。。错误是在这里还是在你的代码里?是的,我不知道发生了什么。我下载了一份全新的Laravel 5,对其进行了测试,效果良好(id
value在这两种情况下都正确显示)。另一件需要注意的是,我正在运行的版本已经过时。我将尝试更新并测试它。@Joefernley很可能是有一个bug,在Laravel 5中一直有很多更改,所以2天前有效的东西在新的更新中可能不起作用,反之亦然
Route::get('/{urlParameter}', function($urlParameter)
{
echo $urlParameter;
});