Laravel 5 / Lumen Request Header?

Так что я не совсем уверен, как это сделать, я попробовал несколько вещей, и я перечислю один ниже, однако я пытаюсь сохранить информацию, отправленную в запросе http, в переменную PHP.

Вот вид из Chrome Postman, когда я отправляю запрос, который хочу отправить. Примечание «pubapi» является «заголовком».

PostMan View

Я возился с просьбами Люмена, как вы можете видеть документально здесь ( http://lumen.laravel.com/docs/requests ) и попытался использовать следующее ниже, чтобы возможно отобразить их, но это не работает, очевидно.

echo Request::all();

Я помещаю это в мой контроллер, и у меня есть …

use Illuminate\Http\Request;

в моем контроллере.

Итак, как я могу сказать сохранить заголовок, который я посылаю «pubapi» в переменную php в моем контроллере?

РЕДАКТИРОВАТЬ

Не уверен, что это поможет, однако, глядя на документы по фреймворкам Laravel, я вижу это http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header Попытка этого вызывает ту же ошибку в моем коде. Так, например, я попробовал следующее и достиг той же ошибки.

echo Request::header('pubapi');

17

Решение

Попробуйте изменить Illuminate\Http\Request в Request,

- use Illuminate\Http\Request;
+ use Request;
16

Другие решения

Вы неправильно понимаете объект запроса 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']
*/
}
}
30

С помощью

echo app('request')->header('pubapi');

Вместо

echo Request::header('pubapi');

Казалось, работает идеально. Может ли кто-нибудь дать дополнительное объяснение, почему это сработало, а мой оригинальный метод — нет?

11

На самом деле вы вызываете его статически, поэтому он не получает соответствующий класс 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);
}
}
1
По вопросам рекламы [email protected]