JForm avec champs supplémentaire non visible dans le JTable Check

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • JForm avec champs supplémentaire non visible dans le JTable Check

    Bonjour,

    J'ai un composant en cours et j'ai un soucis avec le XML (JForm) de mon edit.php. Donc comme d'habitude j'ai mon xml qui contient tous les champs à enregistrer dans la base, jusque la pas de soucis c'est classique sa sauvegarde.

    Par contre j'ai un champ supplémentaire dans mon JForm qui ne se trouve pas être une colonne de ma table. Je l'utilise pour enregistrer des infos dans une autre table. Mais mon soucis est que lors du Check() si je fais un Print_r je vois que mon champs supplémentaire n'est pas affiché. C'est un simple textbox pour les tests.

    Donc si je comprend bien lors du Check() je n'ai accès avec $this qu'au champs étant des colonnes de la table en cours et non ce qui est dans mon JForm. Par contre si je fais un Print_r sur la fonction Bind(), je vois bien mon champs... il se perd entre Bind et Check ?

    Je suppose que je dois mal procéder alors si quelqu'un sait comment faire ?

    Merci

    PS: Ce que j'ai dans mon JTable :
    - Fonction Load() qui appelle sont parent et aussi ajoute le contenu à l'object de mon autre table (le champs supplémentaire) pour récupérer le contenu actuel du champs => OK
    - Fonction Check() vérifie que certains champs ne soient pas vide (dont mon champs supplémentaire) => Erreur ici
    - Fonction Store() qui enregistre dans les deux tables
    www.weblogin.fr - Création, Référencement et Design de sites Internet.

  • #2
    Re : JForm avec champs supplémentaire non visible dans le JTable Check

    Bonjour,

    Il faut déclarer dans ta classe de table la propriété qui n'est pas dans la bdd.

    Lors du bind JTable ne va mettre à jour uniquement les propriétés qui sont déclarés. http://api.joomla.org/__filesource/f....php.html#a430

    Celles ci sont déclarées automatiquement lors de l'appel du contructeur de JTable en listant les colonnes de la table de la bdd http://api.joomla.org/__filesource/f...e.php.html#a94

    Elle devrait être ensuite accessible de partout et être mise à jour.

    Damien
    www.Crac-Design.com

    Commentaire


    • #3
      Re : JForm avec champs supplémentaire non visible dans le JTable Check

      Merci pour ta réponse je vais regarder ça. Par contre j'ai du mal à comprendre à quoi sert la fonction Bind(), si tu as 2min tu pourrais m'expliquer un peu plus ?
      www.weblogin.fr - Création, Référencement et Design de sites Internet.

      Commentaire


      • #4
        Re : JForm avec champs supplémentaire non visible dans le JTable Check

        La méthode Bind est le coeur même de la classe, c'est elle qui va prendre les données de la requête et l'intégrer dans la classe en tant que propriétés.
        Les autres méthodes travaillerons sur ces propriétés rapatriées par la méthode bind.

        J'espere avoir été assez clair.
        www.Crac-Design.com

        Commentaire


        • #5
          Re : JForm avec champs supplémentaire non visible dans le JTable Check

          Ok donc dans l'ordre pour un store on à Load, Bind, Check, Store ? Je pensais que c'était justement Load qui faisait ça. En fait si je comprend bien Load, ne s'occupe que de sa propre table ?

          Je vais essayer de voir si une extension utilise Bind avec ce type de champs supplémentaire dans son propre code pour voir son implantation.

          EDIT: Comment ferais tu pour justement dans la fonction Bind ajouter ma nouvelle variable à l'object ?

          EDIT 2 : Je vais un peu clarifier. Mon champs supplémentaire est sauvegardé dans une autre table donc, dans le bind (ou je ne sais ou) il me faut ajouter ce nouveau champs à l'objet pour qu'il soit accessible à tout moment et après faut il que j'ajoute la valeur actuelle du champs en appelant mon autre table dans le Bind ? dans le Load ? dans le constructeur ?

          Merci beaucoup
          Dernière édition par Mushr00m à 01/04/2013, 02h51
          www.weblogin.fr - Création, Référencement et Design de sites Internet.

          Commentaire


          • #6
            Re : JForm avec champs supplémentaire non visible dans le JTable Check

            De mémoire oui c'est dans cet ordre.
            Toute la classe JTable ne s'occupe que de sa propre table.

            Ok j'avais pas compris ce que tu voulais. En fait la méthode bind vient pousser dans la classe les données, soit depuis une lecture de la bdd par un load soit depuis les données envoyées depuis le formulaire.

            Il faudrait surcharger la méthode load() mais ça nécessite de réécrire un peu trop de code à mon gout même si c'est le plus logique, c'est la que se font les requetes en bdd.
            Le plus simple est de surcharger la méthode bind qui prend en premier paramètre les données qui ont été chargées par le load, à partir de ces données tu vas charger ce que tu veux dans ton autre table.
            Ne pas oublié d'appeler la classe parente à la fin pour qu'elle fasse ce qu'elle aà faire.

            Comme je le dis toujours afin de bien comprendre le mécanisme il faut faire un petit mode débug en mode pas à pas pour bien voir le processus.
            Y a pas mieux.

            Damien
            www.Crac-Design.com

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X