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