У меня есть 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