one-to-many, many-to-many... hard design but clean code ? [FR]

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

  • [RÉGLÉ] one-to-many, many-to-many... hard design but clean code ? [FR]

    Bonjour,

    J'ai un modèle de données qui contient (entre autres) ces quatre tables :

    #__fiches(id_fiche, id_type_fiche, nom)
    #__types_fiches(id_type_fiche, nom)
    #__langues(id_langue, code, nom)
    et
    #__textes(id_texte, id_fiche, id_langue, texte : MEDIUMTEXT)

    pour gérer un catalogue multilingue avec différents types de fiches écrites dans différentes langues.

    les id's sont des INT(11), les autres champs, des VARCHAR(...) et le dernier champ de la quatrième table est un MEDIUM TEXT. Il y a bien sur d'autres champs (par_defaut, publiee) que je ne présente pas ici par souci de clarté.

    Le type de fiche (produit, machine, fiche-technique...) conditionne le masque de saisie utlisé en back-office et le template de rendu en front-end.

    J'ai deux questions : la première pour écrire une requête, la seconde pour un choix de conception MVC de Joomla!


    1. LA REQUETE PROBLEME :

    supposons que le type de fiche 'produit' a le numéro '1234' et que la langue 'espagnol' a 1'id '5' et que je veux sortir toutes ltextes des produits écrits en espagnol, je dois faire :

    Code:
    SELECT t.id_texte, t.texte
    FROM #__textes AS t
    JOIN #__langues AS l ON t.id_langue = l.id_langue
    JOIN #__fiches AS f ON f.id_fiche = t.id_fiche
    JOIN #__type_fiche AS tf ON tf.id_type_fiche = f.id_type_fiche
    WHERE l.id_langue = 5
    AND tf.id_type_fiche = 1234
    et je dois placer cela quelque part dans getListQuery() du modèle #Textes (au pluriel)

    OUF ! cela fait un peu lourd...

    Comment faire pour splitter et alléger le boulot ?
    comment éviter d'utiliser explicitement des id's dans la clause WHERE ?

    Je pense qu'une piste de réponse est d'écrire
    - getLangueId($nom) dans la csse de modèle Langue(s)
    - getTypeFicgeId($nom) dans la classe de modèle TypeFiche(s)

    mais dans ce cas comment utiliser proprement les classes de modèles TypeFche(s) et Langue(s) depuis la classe Textes (avec un s) ???


    2. Design d'interface MVC admin composant Joomla!

    vous l'aurez compris ce n'est pas simple...
    donc pour simplifier la vie de l'utilisateur du site, je vais devoir coder des sortes de 'wizards' (assistants) de saisie côté back-office.

    or ce que je constate, c'est que dans Joomla! MVC! on a essentiellement :

    - une vue liste (contrôleur ADMIN, action default)
    - une vue détail (côntroleur FORM, action defaut)

    mais pas grand chose qui puisse ressembler à un assisant en plusieurs étapes (genre installateur de programmmes Windows : click sur suivant, suivant, ..., terminé !)

    comment créeriez vous un assistant multi-étapes INTEGRE correctement au fonctionnement de Joomla !

    merci de vos réponse, même concises, bonne soirée, Héfeust.
    Dernière édition par hefeust à 12/10/2012, 13h21 Raison: mise en forme (numérotation) corrigée

  • #2
    Re : one-to-many, many-to-many... hard design but clean code ? [FR]

    Bonjour à tous !

    pas encore de réponses à ce que je vois...

    une piste : par wizzards (assistants) j'entends une série d'écrans de saisie (formulaires) qui prendront des informations de l'utilisateur pour préparer la création d'une fiche.. ce qui veut dire qu'un post de formulaire va préparer des entrées dans différente tables, positionnant la base de telle sorte qu'on puisse saisir les traductions.

    pour installer une traduction, il faut :
    - créer une ligne dans la table des fiches
    - donc avant il faut avoir choisi le type de fiche
    - etc

    donc on s'éloigne quelque peu du mode de fonctionnement simple (vue liste + vue détaillée, associé à un model-list et à un model-admin), à priori un écran de l'assistant peut une fois validé, garnir plusieurs tables.

    voilà, vos suggestions et remarques sont les bienvenues...

    a+ Héfeust.

    Commentaire


    • #3
      Re : one-to-many, many-to-many... hard design but clean code ? [FR]

      peu de personnes inspirées à ce que je vois... sujet mal formulé ? besoin de plus de détails ?

      Commentaire


      • #4
        Re : one-to-many, many-to-many... hard design but clean code ? [FR]

        Salut,

        Pour ton système multi-page je ne peux rien te dire car jamais fais... Mais si tu en trouve pas de solution, le plus simple serait de chercher du coté de composant qui l'utilise et t'en inspirer.

        Pour ta requête je ne comprend pas un point. Tu parles bien de la vue qui va t'afficher la liste de toutes tes entrées ? (comme celle des articles en gros). Si c'est le cas comment l'utilisateur va lancer ce filtre par langue ? car sous Joomla tu as le système des filtres directement intégré que tu peux voir en action dans quasi tous les composants backend au dessus de la liste. Cela te permet de créer un state de cette sélection faites par l'utilisateur et donc après tu la récupère dans ton modèle qui fait le get et tu filtres.

        Dis m'en plus je dois avoir mal compris ton soucis.
        www.weblogin.fr - Création, Référencement et Design de sites Internet.

        Commentaire


        • #5
          Re : one-to-many, many-to-many... hard design but clean code ? [FR]

          merci de ta réponse... cela me redonne le moral !

          je vais t'expliquer au plus simple.

          en fait la liste des fiches reprendra, pour chaque ligne correspondant à une fiche, un ensemble de diodes (rouges et vertes) pour indiquer si la traduction de cette fiche existe dans telle ou telle langue. Ensuite, dans le détail d'une fiche, un ensemble de boutons/liens permettra d'accéder à la traduction en vue de son édition.

          ce n'est pas un fonctionnement 100% joomlesque, j'en conviens, mais je n'ai pas trouvé mieux pour le moment...

          voilà pour les précisions. a+

          Commentaire


          • #6
            Re : one-to-many, many-to-many... hard design but clean code ? [FR]

            apres avoir discuté avec le chef d'équipe on va partir repartir sur une conception plus concrète (moins de meta-tables) qui sera plus proche du fonctionnement original du CMS. Merci à ceux qui ont suivi

            Une petite question : dans com_content côté front il y a un controleur master, un controleur article et plein de vues qui ne semblent pas directement liées à un contrôleur... (featured, etc.) comment cela fonctionne-t-il ?

            Commentaire


            • #7
              Re : one-to-many, many-to-many... hard design but clean code ? [FR]

              Pour ton soucis, il faut simplement utilisé de l'ajax pour récupérer les valeurs. ou un genre d'accordeon qui change d'état des que les valeurs sont correctes.
              Tu peux lire les articles sur le composant gratuit et open source en te rendant sur mon site a cette page (en anglais actuellement seulement): explication du composant com_module
              dans la page example-module tu as un module qui génères les vues avec ajax/jquery.
              Pour les tables.
              #__fiches(id_fiche, id_type_fiche, nom, texte(MEDIUMTEXT), lang)
              #__types_fiches(id_type_fiche, nom, texte(MEDIUMTEXT), lang)
              serait beaucoup plus simple
              pour un lien ( parent <>enfants) fiche principale> copies en autre langue
              #__fiches(id_fiche,id_lang, id_type_fiche, texte(MEDIUMTEXT), nom, lang)
              #__types_fiches(id_type_fiche,id_lang, nom, texte(MEDIUMTEXT), lang)

              si tu peut avoir plusieurs types une table suplémentaire id_fiche, id_type + une liste a choix multiple dans ta form.
              http://www.st42.fr : Astuce et téléchargement d’extension Joomla! et virtuemart
              http://shop.st42.fr Catalogue extentions gratuit et Pro pour Virtuemart et Joomla

              Commentaire


              • #8
                Re : one-to-many, many-to-many... hard design but clean code ? [FR]

                merci beaucoup...
                on est revenu à une conception moins abstraite et cela marche mieux...
                je garde note des différents conseils.
                j'aurai d'autres questions a poser, notamment sur les listes de checkboxes
                je marque la discussion comme resolue
                bonne journée.

                Commentaire

                Annonce

                Réduire
                Aucune annonce pour le moment.

                Partenaire de l'association

                Réduire

                Hébergeur Web PlanetHoster
                Travaille ...
                X