Bonjour à tous !
J'ai modifié le "/new/" formulaire de mon module "Playing" qui permet de créer un lien entre un "Artist" et "Song" à une date choisie. Après modifications, j'ai désormais une liste déroulante de groupes ("Bands") et non d' "Artists" dans ce formulaire, et j'aimerais pouvoir sauver en BDD les mêmes informations, mais pour tous les artistes d'un groupe (utilisation d'un foreach())
Le formulaire s'affiche correctement lorsque je visite "/playing/new/" et montre bien une liste de tous les groupes et non d'artistes.
Mais maintenant je me demande où exactement je dois placer le code qui récupère tous les artistes d'un groupe et insère un nouveau "Playing" en base pour chacun d'entre eux ? Est-ce dans la fonction "executeCreate()" du fichier "actions.class.php" ?
Nouveaux détails: J'ai remarqué que "executeCreate()" utilise "processForm()". Cependant, processForm() est aussi utilisée pour l'action "edit", la fonction affiche un message et redirige l'utilisateur. Je ne peux donc pas appeler processForm() dans mon foreach().
J'ai essayé de construire mon propre executeCreate(), mais rien n'a changé du côté de la BDD :
Des suggestions ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public function executeCreate(sfWebRequest $request) { $this->forward404Unless($request->isMethod(sfRequest::POST)); $this->form = $this->configuration->getForm(); $playing= $this->form->getObject(); $artists_list= Doctrine_Query::create() [...] ->execute(); foreach ($artists_list as $artist) { $playing->setArtistId($artist['id']); $playing->save(); } $this->getUser()->setFlash([...]); $this->redirect([...]); }
Partager