无法使用 laravel 检索 GET 参数

Posted

技术标签:

【中文标题】无法使用 laravel 检索 GET 参数【英文标题】:Unable to retrieve GET parameters using laravel 【发布时间】:2015-11-02 17:56:07 【问题描述】:

我正在开发一个 Laravel 项目,并试图从控制器获取 GET 参数。使用?date=value 请求页面应返回value,如下所示:

public function getIndex(Request $request) 
    return $request->input("date");

但这不起作用。 POST 请求可以正常工作。我正在通过 cloudflare 使用 nginx。我尝试使用

制作一个普通的php文件
echo $_GET["date"];

效果很好。

【问题讨论】:

明确一点,你想要的这个参数是作为查询字符串传递的? @Victor 是的,没错 你用的是什么版本的 laravel? 4.2、5.0 还是 5.1?您调用该方法的路线是什么样的?看看this response对你有没有帮助。 @Victor 我使用的是 5.0 版。 Input::get("date") 也不起作用。在 routes.php 我有 Route::controller('page', 'PageController');. 这是这个问题的副本吗? ***.com/questions/31923484/… 非常一致 【参考方案1】:

我发现了我的问题。在站点(/etc/nginx/sites-available/default)的 nginx 配置中,我有

location / 
    try_files $uri $uri/ /index.php?;

应该是

location / 
    try_files $uri $uri/ /index.php?$query_string;

已修复,重新启动,现在可以使用了。

【讨论】:

【参考方案2】:

也许 getIndex() 和 Request $request 不适用于 Route::controller。使用get('/my-route'),更灵活。

【讨论】:

另一个页面使用了显式的Route::get('page', 'PageController@getIndex');,但 GET 请求在那里也不起作用。 您使用相同的参数创建了另一个公共函数,有效吗? (更改函数名并测试)【参考方案3】:

url 中删除index.php 后,我的问题出在.htaccess 文件中,只需在.htaccess 文件中添加这个简单的代码即可:

RewriteEngine On
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule ^(.*)$ index.php/$1 [L]

【讨论】:

以上是关于无法使用 laravel 检索 GET 参数的主要内容,如果未能解决你的问题,请参考以下文章

当 URL 不是根时,无法使用 Laravel 获取 URL 上的 GET 参数

为啥这个 Angular 脚本无法检索 Laravel 4 生成的 JSON?

Laravel 5.7 - 如何使用 axios.get 从 API 检索数据?

如何使用 GET 方法将 GET 参数传递给 Laravel?

Laravel身份验证,我无法检索登录用户

Laravel Artisan 控制台命令无法检索模型集合