2015-04-27 4 views
10

Так что я не совсем уверен, как это сделать. Я пробовал несколько вещей, и я перечислю один ниже, однако то, что я пытаюсь сделать, это хранить информацию, отправленную в HTTP-запросе в переменной PHP.Laravel 5/Lumen Request Header?

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

PostMan View

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

echo Request::all(); 

Я кладу это в моем контроллере и у меня есть ...

use Illuminate\Http\Request; 

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

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

EDIT

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

echo Request::header('pubapi'); 

ответ

9

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

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

Уже разобрался, но решил, что я дам вам лучший ответ за это в любом случае! Благодаря!! – kevingilbert100

+0

@ kmgilbert100, вы можете использовать Illuminate \ Http \ Request с инъекцией (поместить аргумент Request $ request в функцию контроллера. Это самое приятное решение, которое я думаю.) – balintant

9

Использование

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

Вместо

echo Request::header('pubapi'); 

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

+4

Вы пытаетесь использовать фасад, но вы импортируете полный класс Request. Ваш оператор использования должен быть «use Request»; вместо «использовать Illuminate \ Http \ Request»; Первый - это фасад, а второй - действительный класс запроса. Если вы измените инструкцию использования, тогда будет работать Request :: all(). В качестве альтернативы вы можете использовать \ Request :: all(), и он будет работать. – jfadich

+0

Это работает спасибо! @jfadich – kevingilbert100

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'] 
     */ 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^