Salut tout le monde,

Je relance ma discussion sur la sauvegarde des modèles associés,
notamment l'enchaînement save() + saveAll() que je décrivais dans un
message précédent.

Voici en bref ma structure de modèles :

Item belongsTo Nature
Item belongsTo Theme
...
Item hasOne Article
Item hasOne Diaporama
Item hasOne Photo
...
Item HABTM Tag
Item HABTM Agrégat
...
_______________________

Diaporama belongsTo Item
Diaporama HABTM Photo
...

Dans un formulaire, j'ai un tableau représentant des Photos avec une
case à cocher pour chaque photo. Le but est d'insérer les photos
cochées dans un Diaporama (donc de compléter la table de liaison
diaporamas_photos issue de la relation "Diaporama HABTM Photo".

Comme je l'ai indiqué dans l'autre message sur ce sujet, un "$this-
>Item->save($this->data)" me sauvegarde bien tous les champs dont le
name est égal à "data[Item][nom_du_champ]", ainsi que les deux HABTM
pour tag et agregat, dont les attributs name sont du type "data[Tag]
[Tag][]" et "data[Agregat][Agregat][]".

Par contre, le save() "simple" ne sauvegarde pas les champs du type
data['Nature']['id'] ou data['Diaporama']['legende']. Pour ces champs
là, je dois faire appel à $this->Item->saveAll($this-data).

J'ai donc dans mon contrôleur quelque chose comme celà :

if (!empty($this->data)) {
 if ($this->Item->save($this->data) && $this->Item->saveAll($this-
>data)) {
   $this->Session->setFlash(__('The Item has been saved', true));
   $this->redirect(array('action'=>'index'));
 }
 $this->Session->setFlash(__('The Item could not be saved. Please, try
again.', true));
}

Bien que je ne trouve pas celà très élégant, ni très performant (le
saveAll() re-sauvegarde les champs liés à Item !), cela fonctionne
correctement, SAUF pour les photos de mon diaporama, qui ne sont
jamais sauvegardées !

Dans mon formulaire, toutes les checkbox liées aux photos ont un name
de format "data['Photo']['Photo'][]".

Comment faire pour que ces champs aillent bien compléter ma table de
liaison "diaporamas_photos" qui est le reflet de l'association
Diaporama HABTM Photo ?

J'ai essayé de jouer avec du recursive, avec du bind/unbind et même
avec le Bindable Behavior de Mariano, mais rien à faire...

J'ajoute que le formulaire global n'affiche pas forcément des champs
pour le diaporama, donc je cherche une solution full dynamique, qui
m'évite de faire un gros switch dans mon contrôleur (Exemple : if
(diaporama) -> $this->Diaporama->save($this->data), elseif (Article) -
> $this->Article->save(), etc.)...






--~--~---------~--~----~------------~-------~--~----~

Groupe "Cakephp-fr".
Adresse : [email protected]
Pour résilier  : [EMAIL PROTECTED]
Pour les options : http://groups.google.com/group/cakephp-fr?hl=fr
-~----------~----~----~----~------~----~------~--~---

Répondre à