Assignation de valeurs par défaut via model ou controller?

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

  • [RÉGLÉ] Assignation de valeurs par défaut via model ou controller?

    Bonjour à tous,

    Comme il s'agit de mon premier message, un peu de présentation me semble de rigueur.
    Mes excuses par avance s'il existe un sujet qui répond déjà à ce point, mes recherches ont été infructueuses...
    Je m'appelle Hervé, sévit sur le net sous le pseudonyme de Chipstouille, travaille dans l'informatique depuis une bonne quinzaine d'année, bien que j'ai laissé de côté le développement depuis 2007.
    J'ai donc un background de vieux développeur C++ avec quelques rudiments de PHP (d'une époque antérieure à HTML 5...), qui tente malgré tout d'essayer de suivre le mouvement.

    J'ai pas mal de temps libre en ce moment et travaille donc à la refonte d'un site perso. Après quelques années à travailler sur ServiceNow côté pro, je me suis donc dit qu'un CMS serait la solution idéale. N'ayant cependant pas les moyens de m'acheter une license, j'ai donc jeté mon dévolu sur l'open source et donc plus précisément Joomla.
    Cela fait donc quelques mois que j'apprends les rudiments de l'administration et ce mois-ci le développement de composants.

    J'ai suivi le tutorial mis en ligne sur le site de Joomla pour développer des composants MVC (celui-là: https://docs.joomla.org/J3.xevelop...t/Introduction).
    A quelques étapes près vers la fin qui m'ont semblées inutiles par rapport aux besoins auxquels je fais face dans l'immédiat.

    Outre quelques questions sur le renommage de classes qui a eu lieu depuis la version 3.8 (on y viendra plus tard, rien de bloquant pour le moment), j'arrive avec un composant à moitié terminé sur lequel je me pose quelques questions concernant la cohérence du code proposé.

    Plus précisément:
    - Côté Front-end, le tutorial nous amène à surcharger la fonction save() de la classe FormController (ou JControllerForm) et même à complètement la redévelopper pour ce faire, ce qui me semble très lourd. Ceci permet d'assigner automatiquement des valeurs aux champs created et created_by.
    - Côté Back-end (mais cette partie est également appelée par le Front-End), le tutorial nous amène à surcharger la fonction check() de la classe Table (ou JTable) cette fois-ci pour générer automatiquement les alias.

    Tout ceci me semble manquer de cohérence. On peut également voir que côté vue, il est possible d'assigner des valeurs par défaut, mais je suppose uniquement statique.

    Je m'y perds un peu.
    Je cherche simplement à assigner des valeurs aux champs modified_by, modified, created_by et created. N'existe-t-il pas un standard Joomla qui se charge dejà de ça?
    Sinon a priori, j'aurai tendance à dire que regrouper celà avec la surcharge de Table::check() semble plus simple, mais le nom de la méthode n'est pas franchement adapté.
    Y-a-t-il une méthode recomandée par les habitués?

    Dernière édition par Chipstouille à 22/09/2020, 15h10

  • #2
    Envoyé par Chipstouille Voir le message
    Je cherche simplement à assigner des valeurs aux champs modified_by, modified, created_by et created. N'existe-t-il pas un standard Joomla qui se charge dejà de ça?
    Sinon a priori, j'aurai tendance à dire que regrouper celà avec la surcharge de Table::check() semble plus simple, mais le nom de la méthode n'est pas franchement adapté.
    Y-a-t-il une méthode recomandée par les habitués?

    Généralement c'est fait dans la méthode store de la classe hérité de JTable.

    C'est effectivement surprenant que JTable::store ne gère pas nativement ces champs dans la mesure où ils existent et qu'ils sont "génériques" dans la logique des tables de Joomla.

    Mais il faudrait avoir un paramètre permettant de ne pas les mettre à jour (au moins pour les champs liés aux updates, car cela peut arriver).
    Ceci comme par exemple pour l'encodage JSon de champs définis dans la propriété _jsonEncode de la classe hérité de JTable.

    Dans tous les cas tu peux faire une classe générique qui hérite de JTable dans ton composant ou dans ta library, et placer le code nécessaire dans la méthode store avant d'appeler le store de la classe parente.
    Classe générique que tes classes de tables hériteraient ensuite bien sûr.

    Regarde aussi par exemple : /administrator/components/com_contact/tables/contact.php

    La méthode check quand à elle est faite pour vérifier le contenu des champs (pouvant être modifiés par l'internaute) avant enregistrement.
    S'il y a erreur, le message est affiché à l'internaute pour correction)
    Ce n'est pas vraiment le boulot de la méthode check de mettre à jour ou de corriger des valeurs de champs.

    Les classes héritant de JTable étant utilisées en admin et en frontal bien sûr.
    Et tu peux utiliser en front un model héritant de ton model d'admin.
    Dernière édition par roland_d_alsace à 22/09/2020, 11h03
    A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
    Rejoignez le Joomla Users Groupe Alsace...
    roland_d_alsace va-t-il devenir roland_du_grand_est ?

    Commentaire


    • #3
      Merci beaucoup pour ce retour.
      "store" me semble déjà plus indiqué comme nom de fonction pour une telle action, en effet. Je vais suivre cette recomandation.

      Bonne journée.

      Commentaire


      • #4
        Pour info, vu que tu commences à rentrer dans le framework, je fais moi aussi quelques notes quand je l'estime nécessaire.
        Voir ici, si cela peut t'aider...

        Bon dev et bonne soirée
        Dernière édition par roland_d_alsace à 22/09/2020, 18h22
        A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
        Rejoignez le Joomla Users Groupe Alsace...
        roland_d_alsace va-t-il devenir roland_du_grand_est ?

        Commentaire

        Annonce

        Réduire
        Aucune annonce pour le moment.

        Partenaire de l'association

        Réduire

        Hébergeur Web PlanetHoster
        Travaille ...
        X