Donc, je ne sais pas trop comment procéder. J'ai essayé plusieurs choses et je vais en énumérer une ci-dessous, mais ce que j'essaie de faire, c'est de stocker les informations envoyées dans une requête http dans une variable PHP.
Voici une vue de Chrome Postman de l’envoi de la demande que je veux envoyer. Remarque "pubapi" est un "en-tête".
Je m'amuse avec les demandes Lumen comme vous pouvez le voir documenté ici ( http://Lumen.laravel.com/docs/requests ) et j'ai essayé d'utiliser les éléments ci-dessous pour les afficher, mais cela ne fonctionne pas. évidemment.
echo Request::all();
Je mets ceci dans mon contrôleur et j'ai ...
use Illuminate\Http\Request;
dans mon contrôleur.
Alors, comment pourrais-je dire stocker l'en-tête que j'envoie "pubapi" dans une variable php dans mon contrôleur?
MODIFIER
Je ne sais pas si cela vous aidera. Cependant, si je regarde les docs des frameworks Laravel, je vois ceci http://laravel.com/api/5.0/Illuminate/Http/Request.html#method_header } cette tentative génère la même erreur. dans mon code. Ainsi, par exemple, j'ai essayé ce qui suit et j'ai obtenu la même erreur.
echo Request::header('pubapi');
Essayez de changer le Illuminate\Http\Request
en Request
.
- use Illuminate\Http\Request;
+ use Request;
Vous comprenez mal l'objet de requête Laravel à deux niveaux.
Premièrement, l'erreur que vous obtenez est due au fait que vous avez référencé l'objet au lieu de la façade. Les façades permettent de transférer les appels de méthodes statiques à des méthodes non statiques.
Deuxièmement, vous envoyez la valeur sous forme d'en-tête, mais vous tentez d'accéder aux paramètres de la demande. Cela ne vous donnera jamais ce que vous voulez.
Voici un moyen simple de voir un exemple de ce que vous voulez en créant un itinéraire test comme ceci:
Route::match(['get','post'], '/test', function (Illuminate\Http\Request $request) {
dd($request->headers->all());
});
Publiez cette route et vous verrez vos en-têtes, dont l'un sera pubapi . Veillez à ce que la définition de la méthode d'itinéraire corresponde à la façon dont vous soumettez la demande (par exemple, GET ou POST).
Appliquons ceci au contrôleur, 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']
*/
}
}
En utilisant
echo app('request')->header('pubapi');
Au lieu de
echo Request::header('pubapi');
Semblait fonctionner parfaitement. Quelqu'un pourrait-il fournir une explication supplémentaire pour expliquer pourquoi cela a fonctionné et ma méthode originale n'a pas fonctionné?
En fait, vous l’appelez de manière statique, c’est pourquoi il n’obtient pas la classe Request appropriée et une erreur de projection, vous pouvez procéder comme suit
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);
}
}