如何在 Laravel 中获取原始表单数据?
Posted
技术标签:
【中文标题】如何在 Laravel 中获取原始表单数据?【英文标题】:How do I get raw form data in Laravel? 【发布时间】:2014-03-26 08:38:48 【问题描述】:我有一个脚本正在尝试使用 HTTP PUT 将数据发送到我的站点。通常,我会通过使用file_get_contents('php://input')
从输入流中读取来检索它。但是,当我尝试使用 Laravel 时,我什么也没得到!为什么不?如何读取原始输入数据?
【问题讨论】:
【参考方案1】:Laravel 拦截所有输入。如果您使用 5.6 之前的 PHP,php://input
流只能读取一次。这意味着您需要从框架中获取数据。您可以通过访问Request
实例上的getContent
方法来做到这一点,如下所示:
$content = Request::getContent(); // Using Request facade
/* or */
$content = $request->getContent(); // If you already have a Request instance
// lying around, from say the controller
由于Illuminate\Request
扩展了Symfony\Component\HttpFoundation\Request
,并且getContent
在这里定义:http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/Request.html#method_getContent
【讨论】:
我认为理论上你应该不需要获取实例,而可以直接使用外观:Request::getContent();
我正在尝试将 XML 发送到 Laravel 并使用此功能,但它不起作用。
非常感谢。 $content = request()->getContent();
也可以。
链接断了一半。它重定向到 GitHub 并且锚点 #method_getContent
根本不起作用。 #L1478 确实有效,但我不知道它有多稳定(或者它是否是预期的)。【参考方案2】:
您还可以使用Request::json($key, $default);
返回 JSON 有效负载中特定键的值。
【讨论】:
【参考方案3】:最新 Laravel 更新(我使用的是 Laravel 5.8)
在使用 Request::getContent();
时可能会遇到错误,因为最新的 Symfony Request 模块(它是 Laravel 的 Request 模块的基础)不再提供 getContent
作为静态方法。相反,我使用Request::createFromGlobals()->getContent();
。
参考:Accessing Request Data
【讨论】:
这并没有提供问题的答案。一旦你有足够的reputation,你就可以comment on any post;相反,provide answers that don't require clarification from the asker.以上是关于如何在 Laravel 中获取原始表单数据?的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5 Eloquent:如何获取正在执行的原始 sql? (带有绑定数据)
在执行查询之前,如何从 Laravel 的查询构建器中获取原始查询字符串?