155 votes

Comment changer la valeur d'un paramètre de requête dans laravel ?

J'ai besoin de changer la valeur de mon paramètre de demande comme ceci :

$request->name = "My Value!";

J'utilise ce code mais il ne fonctionne pas :

$request->offsetSet('img', $img);

2 votes

Duplicata possible de Laravel change la valeur d'entrée - la réponse se trouve dans le commentaire de la première question.

254voto

Alexey Mezenin Points 86781

Essayez :

$requestData = $request->all();
$requestData['img'] = $img;

Une autre façon de le faire :

$request->merge(['img' => $img]);

Merci à @JoelHinz pour cela.

Si vous voulez ajouter ou écraser des données imbriquées :

$data['some']['thing'] = 'value';
$request->merge($data);

Si vous n'injectez pas Request $request vous pouvez utiliser l'objet global request() aide ou \Request:: au lieu de $request

0 votes

Erreur : Appel à une méthode non définie Illuminate \Http\Request ::put()

1 votes

Put() est une méthode de collecte, $request->all() retourne un tableau.

6 votes

L'objet de requête possède en fait les méthodes replace() et merge(). Je préfère généralement les utiliser. Voir mon commentaire sur la question pour une réponse de l'OS à ce sujet.

183voto

doncadavona Points 1621

Utilisez merge() :

$request->merge([
    'user_id' => $modified_user_id_here,
]);

Simple ! Il n'est pas nécessaire de transférer l'ensemble du $request->all() à une autre variable.

11voto

Alaa Moneam Points 45

Si vous devez personnaliser la demande

$data = $request->all();

vous pouvez passer le nom du champ et la valeur

$data['product_ref_code'] = 1650;

et enfin passer la nouvelle demande

$last = Product::create($data);

10voto

Ja Ouad Points 29

Si vous avez besoin de mettre à jour une propriété dans la requête, je vous recommande d'utiliser la méthode replace de la classe Request utilisée par Laravel

$request->replace(['property to update' => $newValue]);

6 votes

Attention, la méthode de remplacement supprime les données de la requête originale, et les remplace par votre tableau. \Symfony\Component\HttpFoundation\ParameterBag ligne 54 public function replace(array $parameters = []) { $this->parameters = $parameters ; }

2 votes

J'éviterais d'utiliser replace(), cela peut entraîner des bogues très gênants pour votre API.

1 votes

Qu'en est-il de la mise à jour à l'intérieur d'un tableau d'une requête ?

9voto

Luís Fernando Points 1

Utilisez l'ajout

$request->request->add(['img' => $img]);

0 votes

C'est ce que je cherchais, merci !

0 votes

Ceci est très utile lorsque l'on utilise l'objet $request dans un middleware. Par exemple, j'utilise jwt pour mon endpoint api et mes requêtes ne contiennent que des chaînes jwt. Lorsque l'utilisateur s'authentifie, j'ajoute userId à l'objet $request dans le middleware.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X