Как получить данные формы в laravel?

У меня есть script, который пытается отправить данные на мой сайт с помощью HTTP PUT. Обычно я просто извлекаю его, читая из входного потока file_get_contents('php://input'). Однако, когда я пробую это с laravel, я ничего не получаю! Почему нет? Как читать исходные входные данные?

Ответ 1

Laravel перехватывает все входные данные. Если вы используете PHP до 5.6, поток 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\Request, а getContent определяется здесь: http://api.symfony.com/3.0/Symfony/Component/HttpFoundation/Request.html#method_getContent

Ответ 2

Вы также можете использовать Request::json($key, $default); для возврата значения определенного ключа в полезную нагрузку json.

Ответ 3

Обновление для последней версии 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