如何在laravel中获取原始表单数据?

时间:2014-02-24 15:27:43

标签: php http laravel put

我有一个尝试使用HTTP PUT将数据发送到我的网站的脚本。通常,我只需通过使用file_get_contents('php://input')读取输入流来检索它。但是,当我尝试使用laravel时,我什么都没得到!为什么不?如何读取原始输入数据?

3 个答案:

答案 0 :(得分:24)

Laravel拦截所有输入。如果您使用的是5.6之前的PHP,那么php://input流只能读取一次。这意味着您需要从框架中获取数据。您可以通过访问getContent实例上的Request方法来执行此操作,如下所示:

$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\RequestgetContent在此处定义:http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/Request.html#method_getContent

答案 1 :(得分:0)

您还可以使用Request::json($key, $default);返回json有效内容中特定键的值。

答案 2 :(得分:0)

更新了最新的Laravel(我使用的是laravel 5.8),在使用Request::getContent();时可能会遇到错误,因为最新的Symfony Request模块(位于Laravel的Request模块的基础)不再提供静态的getContent方法。相反,我使用Request::createFromGlobals()->getContent();

参考:https://symfony.com/doc/current/components/http_foundation.html#accessing-request-data