Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu] jForms, jDao et table intermédiaire pour multiple catégories

Posted by Nesswaw on 09/08/2011 09:23

Bonjour,

En gros en à une table "article" et une table "categorie", un article peut avoir plusieurs catégorie.

Question 1: Je suis obligé d'avoir un table intermédiaire pour stocker mes liaisons? C'est le plus propre?

Question 2: Jelix offre une gestion pour cette gestion de table intermédiaire? Sinon comment bien faire?

Je pensais à mettre dans mon jForms article un champ de type "listbox" qui me permettra de sélectionner plusieurs catégories, mais après je dois tout gérer à la main, pour l'insertion, la mise à jour ou encore la suppression dans ma base de données?

Merci d'avance

  [Opened] jForms, jDao et table intermédiaire pour multiple catégories

Reply #1 Posted by laurentj on 09/08/2011 09:39

Bonjour,

Je suis obligé d'avoir un table intermédiaire pour stocker mes liaisons? C'est le plus propre?

tu n'as pas le choix, oui, il faut une table intermédiaire.

Jelix offre une gestion pour cette gestion de table intermédiaire?

dans jDao, non

Sinon comment bien faire?

tu peux te faire un dao reposant sur ta table intermédiaire, pour gérer les liaisons. en plus des daos sur article et categorie

Pour jForms, tu as des methodes pour gérer les données des tables de liaisons, pour l'initialisation et pour la sauvegarde. il faut leur fournir un dao basé sur la table de jointure.

 

  [Opened] Re: jForms, jDao et table intermédiaire pour multiple catégories

Reply #2 Posted by Nesswaw on 09/08/2011 10:50

Bonjour,

Merci pour la réponse, j'ai donc essayer, mais j'ai une erreur qui apparait quand je veux créer un nouvel enregistrement:

Impossible d'utiliser le control "fk_idBtCat" avec la dao car le formulaire bonnetable~bonnetable n'a pas d'id

J'utilise le crud de Jelix, voici le bout de code qui pose problème:

protected function _preCreate($form) {
<code>
        $form->initControlFromDao('fk_idBtCat', 'admin~bonnetable_btcat');
    }
</code>

Quand je crée un nouvel enregistrement l'id n'existe pas encore...comment corrigé cette erreur?

Merci

  [Opened] Re: jForms, jDao et table intermédiaire pour multiple catégories

Reply #3 Posted by Nesswaw on 09/08/2011 11:46

Je crois bien que c'est un bug...je ne peux pas créer de nouveaux enregistrement, mais je peux éditer ceux déjà existants.

  [Opened] jForms, jDao et table intermédiaire pour multiple catégories

Reply #4 Posted by laurentj on 09/08/2011 14:58

Dans le cas d'une création, bien évidement tu ne fais pas de initControlFromDao. Ça n'a pas de sens. En toute logique, dans ta table bonnetable_btcat il n'y a aucune référence à l'enregistrement que tu veux créer puisqu'il n'existe pas. Donc tenter de récupérer des enregistrement de ta table de jointure ne sert à rien.

Par contre il faut faire le initControlFromDao dans le pre update.

  [Opened] Re: jForms, jDao et table intermédiaire pour multiple catégories

Reply #5 Posted by Nesswaw on 09/08/2011 15:08

C'est ok pour la fonction initControlFromDao() par contre le problème est le même quand je sauvegarde en base avec la fonction saveControlToDao()::

protected function _beforeSaveCreate($form, $form_daorec) {
<code>
        $form->saveControlToDao('categorie', 'admin~bonnetable_btcat');
    }
</code>

Et là à le création je suis obligé de d'avoir cette fonction pour sauvegarder...

Merci

  [Opened] jForms, jDao et table intermédiaire pour multiple catégories

Reply #6 Posted by laurentj on 09/08/2011 16:02

oui mais il faut peut être l'appeller après que l'enregistrement principal soit crée. Même souci qu'auparavant : enregistrement pas crée, donc pas d'id, donc insertion dans la table de jointure impossible. Bref, faire le saveControlToDao dans le _afterCreate

  [Opened] Re: jForms, jDao et table intermédiaire pour multiple catégories

Reply #7 Posted by Nesswaw on 09/08/2011 16:41

J'ai un peu le tête à l'envers aujourd'hui, merci ça fonctionne :)

 
Page
  1. Re: jForms, jDao et table intermédiaire pour multiple catégories