web-dev-qa-db-fra.com

comment obtenir toutes les entrées de POST à Laravel 5

J'utilise Laravel 5 et j'essaie d'obtenir toutes les entrées de la variable POST dans le contrôleur comme ceci-

public function add_question()
{
    return Request::all();
}

Donc, je reçois ces erreurs-

 enter image description here

Qu'est ce que je fais mal?

27
Abrar Jahin

Essaye ça :

use Illuminate\Support\Facades\Request;
public function add_question(Request $request)
{
    return $request->all();
}
27

Il semble y avoir une erreur majeure dans presque toutes les réponses actuelles en ce sens qu'elles affichent les données LES GET et POST. Pas les données SEULEMENT _ POST. 

Le problème avec votre code en tant que réponse acceptée mentionnée est que vous n'avez pas importé la façade. Cela peut être importé en ajoutant ce qui suit en haut:

use Request;

public function add_question(Request $request)
{
    return Request::post();
}

Vous pouvez également utiliser la méthode de requête globale comme suit (mentionnée par @Canaan Etai), sans aucune importation requise:

request()->post();

Cependant, une meilleure approche pour importer Request dans une méthode de contrôleur consiste à injecter une dépendance, comme indiqué dans la réponse @shuvrow:

use Illuminate\Http\Request;

public function add_question(Request $request)
{
    return $request->post();
}

Plus d'informations sur DI peuvent être trouvées ici:

Dans les deux cas, vous devez utiliser:

// Show only POST data
$request->post(); // DI
request()->post(); // global method
Request::post(); // facade

// Show only GET data
$request->query(); // DI
request()->query(); // global method
Request::query(); // facade

// Show all data (i.e. both GET and POST data)
$request->all(); // DI
request()->all(); // global method
Request::all(); // facade
17
Yahya Uddin

Vous devriez utiliser la façade plutôt que Illuminate\Http\Request. Importez-le en haut:

use Request;

Et assurez-vous que cela n'entre pas en conflit avec l'autre classe.

Edit: Cette réponse a été écrite il y a quelques années. Je privilégie maintenant l'approche proposée par Shuvrow ci-dessous.

5
Joel Hinz

Pour ceux qui sont venus ici à la recherche de "comment obtenir toutes les entrées de POST" uniquement

la classe Illuminate\Http\Request s'étend de Symfony\Component\HttpFoundation\Request qui a deux variables de classe qui stockent les paramètres de requête.

public $query - pour les paramètres GET

public $request - pour les paramètres POST

Utilisation: Pour obtenir une donnée de poste seulement

$request = Request::instance();
$request->request->get('my_param');

Source ici

4
Victor Anuebunwa

Tu peux l'utiliser 

$params = request()->all();

sans pour autant

import Illuminate\Http\Request OR 

use Illuminate\Support\Facades\Request OR autre.

0
Rafael Mendes

Vous pouvez obtenir toutes les données de publication dans cette fonction: -

$postData = $request->post();

et si vous voulez un fichier spécifique, utilisez-le: -

$request->post('current-password');
0
nageen nayak