Je traite les données dans un contrôleur et je souhaite les transmettre davantage à un autre contrôleur pour éviter les doublons de code.
Existe-t-il un moyen de configurer un objet Request nécessaire dans la méthode store
- de l'autre contrôleur,? J'ai tracé l'héritage de Request et suis arrivé à l'objet Request de Symfony qui possède une propriété request
qui est en fait un ParameterBag
qui contient une méthode add
pour ajouter des paramètres avec des valeurs.
J'ai essayé ce qui suit mais je reçois null
comme résultat:
$myRequest = new Request();
$myRequest->request->add(['foo' => 'bar']);
var_dump($myRequest->foo);
Je suis sur Laravel 5.1 pour ce projet.
Vous pouvez utiliser replace()
:
$request = new \Illuminate\Http\Request();
$request->replace(['foo' => 'bar']);
dd($request->foo);
Sinon, il serait plus logique de créer une Job
pour tout ce qui se passe dans votre deuxième contrôleur et de supprimer l'interface ShouldQueue
pour la faire fonctionner de manière synchrone.
J'espère que cela t'aides!
La création d'un objet de requête avec $myRequest = new Request();
crée l'objet avec method = 'GET'
. Vous pouvez vérifier la méthode de votre demande avec $myRequest->getMethod()
. Comme la propriété request
contient des données pour les demandes POST], vous ne pouvez pas utiliser $myRequest->request->add()
par défaut. Vous devez d’abord définir la méthode de la requête sur POST:
$myRequest = new \Illuminate\Http\Request();
$myRequest->setMethod('POST');
$myRequest->request->add(['foo' => 'bar']);
dd($request->foo);
En passant, en utilisant $myRequest->query->add()
, vous pouvez ajouter des données à une requête GET.
Vous pouvez ajouter le paramètre request à la volée en utilisant ces méthodes.
Si vous êtes dans le contrôleur, passez l'objet Request dans les paramètres de la fonction, comme
function createUser(Illuminate\Http\Request $request){
$request->replace(array_merge(array("new_key1"=>"new_value1","new_key_n"=>"new_value_n"), $request->all()));
}
function createUser(Illuminate\Http\Request $request){
$request->merge(array("new_key1"=>"new_value1","new_key_n"=>"new_value_n"));
}
function createUser(Illuminate\Http\Request $request){
$request->request->add(array_merge(array("new_key1"=>"new_value1","new_key_n"=>"new_value_n"), $request->all()));
}
Remarque: dans toutes les fonctions, nous étendons la demande, le paramètre précédent moyen y restera. Vous allez ajouter le vôtre. Vous pouvez tous les remplacer.