Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel-无法获取url获取参数_Php_Laravel_Laravel Routing_Laravel 5 - Fatal编程技术网

Php Laravel-无法获取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(“/

我在尝试向路由发出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(“/”)并传入一些数据时,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; 
});