Ответ 1
Попробуйте изменить Illuminate\Http\Request
на Request
.
- use Illuminate\Http\Request;
+ use Request;
Итак, я не совсем уверен, как это сделать. Я пробовал несколько вещей, и я перечислил один ниже, однако то, что я пытаюсь сделать, это хранить информацию, отправленную в HTTP-запросе в переменной PHP.
Вот сообщение от Chrome Postman от меня, отправляющего запрос, который я хочу отправить. Примечание. "Pubapi" - это "заголовок".
Я общался с запросами Lumen, как вы можете видеть здесь (http://lumen.laravel.com/docs/requests) и попытались использовать нижеприведенное ниже отображать их, но не работает, очевидно.
echo Request::all();
Я помещаю это в свой контроллер, и у меня есть...
use Illuminate\Http\Request;
в моем контроллере.
Итак, как я могу сохранить заголовок, который я отправляю "pubapi" в переменную php в моем контроллере?
ИЗМЕНИТЬ
Не уверен, что это поможет, однако, глядя на документы Laravel frameworks, я вижу это http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header, пытаясь сделать такую же ошибку в моей код. Так, например, я попробовал следующее и получил ту же ошибку.
echo Request::header('pubapi');
Попробуйте изменить Illuminate\Http\Request
на Request
.
- use Illuminate\Http\Request;
+ use Request;
Вы неправильно понимаете объект запроса Laravel на двух уровнях.
Во-первых, ошибка, которую вы получаете, связана с тем, что вы ссылались на объект вместо фасада. Фасады имеют способ перенаправления вызовов статических методов на нестатические методы.
Во-вторых, вы отправляете значение в виде заголовка, но пытаетесь получить доступ к параметрам запроса. Это никогда не даст вам то, что вы хотите.
Вот простой способ увидеть пример того, что вы хотите, создав тестовый маршрут следующим образом:
Route::match(['get','post'], '/test', function (Illuminate\Http\Request $request) {
dd($request->headers->all());
});
Отправьте на этот маршрут, и вы увидите свои заголовки, один из которых будет pubapi. Обратите внимание, что определение метода маршрута соответствует тому, как вы отправляете запрос (т.е. GET или POST).
Пусть это применимо к контроллеру, ArticleController:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function index(Request $request)
{
$pubapi = $request->header('pubapi'); // string
$headers = $request->headers->all(); // array
/*
$pubapi === $headers['pubapi']
*/
}
}
Использование
echo app('request')->header('pubapi');
Вместо
echo Request::header('pubapi');
Казалось, что он работает отлично. Может ли кто-нибудь дать дополнительное объяснение, почему это сработало, и мой оригинальный метод не сделал?
На самом деле вы вызываете его статически, поэтому, если он не получает соответствующий класс Request и выдает ошибку, можно сделать следующее
use Illuminate\Http\Request;
//inside your controller
class YourClass extends Controller{
public function yourFunction(Request $request){
//for getting all the request
dd($request->all());
//for getting header content
dd($request->header('pubapi'));
}
}