Bonjour à tous,
je me casse la tête depuis des jours sur ce sujet !
Imaginons 3 tables liées (volontairement simplifiées) :
J'ai créé les modèles suivants :
public function clients(){
return $this->hasMany('App\Clients');
}
public function vehicules(){
return $this->hasOne('App\Vehicules');
}
public function reclamations(){
return $this->belongsTo('App\Reclamations');
}
public function reclamations(){
return $this->belongsTo('App\Reclamations');
}
J'ai aussi créé mes "RESTful" controllers : ReclamationsController.php, ClientsController.php et VehiculesController.php.
Chaque enregistrement dans les 3 tables est unique (ex : je ne souhaite pas réutiliser l'ID du véhicule "Peugeot 308" dans une autre réclamation ; j'aurais ainsi potentiellement plusieurs véhicules "Peugeot 308" avec des IDs différents dans la table Vehicules, mais peu importe).
Dans ma vue, j'ai un seul gros formulaire de "Saisie d'une réclamation" avec des champs relatifs aux 3 tables (je n'ai pas besoin de mettre à jour les tables séparément depuis leurs vues dédiées ; je fais tout uniquement depuis ce formulaire général).
Quelle serait la meilleure solution pour créer / mettre à jour les enregistrements dans ces 3 tables à partir d'un unique formulaire de "Saisie d'une réclamation" ?
J'ai pensé créer un unique controller "ReclamationsController" dans lequel je récupère les 3 Modèles, je crée les instances, etc. et j'envoie le tout à mon unique formulaire... Est-ce la bonne manière de faire ?
Ensuite, dans ma vue (mon formulaire en fait...), comment gérer les inputs pour mettre à jour mes 3 tables... alors que je ne peux "POSTer" qu'à une seule URL ???
Je remercie infiniment toutes celles et ceux qui pourront au-moins me mettre sur la piste !
Bonsoir,
je ne suis pas sur de savoir si c'est la bonne manière de faire mais instinctivement je pense que je me serais orienté sur la même solution que vous (Reclamation controller). Mais peut-être que vous pourriez essayer un envoi de multiples form grâce a javascript (je ne suis pas sur a 100% que ce soit possible mais google sensei lui devrait pouvoir vous répondre à ce sujet).
Cordialement