Architecture d’un module magento : Model, Block, Helper, Etc, Controller, Sql

novembre 18, 2009 6 Commentaires

Les modules de magento sont composés de plusieurs éléments. Ces éléments sont regroupés au sein de dossier.
- Block – controler – etc – Helper – Model – sql
Chaque module peut contenir certains ou tous les éléments. Tout dépend de la taille est des fonctionnalités du module. Nous allons voir dans ce tutoriel leurs rôles au sein du module. Des tutoriels plus approfondis seront consacrés à chaque élément.

Etc

Le dossier etc contient des fichiers XML. Il structure le module et déclare les éléments que nous allons voir plus bas (model, block, controller, helper), les 2 fichiers principaux sont config.xml et system.xml.

Model

Un model est l’essence du module. Il est chargé de déplacer les données entre le programme et la base de données de magento. Les model sont chargés de manipuler les données. Le rendu est défini par le code contenu dans les Block. Les model sont chargés de manipuler les données entre les différents éléments du module. Ils définissent les types de données et créent des liens entres les différents types de données.

Helper

Les helper sont des classes qui nous aident à accéder au code utilitaire de magento (les méthodes importantes). Les classes que l’on rajoute dans le dossier helpers étendent les classes se trouvant dans magento\app\code\core\Mage\Core\Helper\
Dans abstract vous trouverez des fonctions importantes comme __() qui sert pour la traduction. On la retrouve souvent dans les phtml (les templates) sous cette
forme $this__(). D’autres méthodes utiles se trouvent dans la classe js function getScript qui renverra des balises script pour incorporer du javascript.
Vous l’aurez compris les helpers sont là pour mettre à disposition des fonctions importantes du core de magento.
Un module peut ou ne peut pas utiliser les helpers. Les helpers se déclarent dans le fichier confi.xml du dossier, etc d’un module.

Block

Les block de magento sont ceux qui contrôlent la partie visible de magento. Les block sont directement rattachés au template. Les block correspondent à la partie « view « du model view controller de magento (MVC). Les block étendent la classe template qui se trouve dans le dossier core de magento C:\wamp\www\magento\app\code\core\Mage\Core\Block\Template.php qui elle-même étend la classe abstract, vous disposez dans ces classes
les principales méthodes du système de block template de magento. Une des plus importantes méthodes de ces classes est _toHtml() qui est rattachée à la méthode renderView().

Controlleur

Les controller sont les aiguilleurs de magento. En fonction de la page demandée, magento grâce au contrôller va analyser, l’URL est renvoyée, l’affichage approprié. Les fichiers controller étendent la classe Mage_Core_Controller_Front_Action. Pour comprendre le fonctionnement des contrôles je vous renvoie à ce tutoriel sur l’introduction à la system view controller.

SQL

Les Fichiers SQL servent créer les tables lors de la mise en place du module ou à mettre à jour les tables de la base de données de magento.

Code
6 commentaires : “Architecture d’un module magento : Model, Block, Helper, Etc, Controller, Sql”
  1. david dit :

    Bonjour comment on fait pour mettre de nouvelles table dans la base de données magento avec SQL mais comment ? existe t’il de la documentation ou un tuto sur ton blog.
    Il faut que je rajoute deux tables
    merci pour le partage

  2. admin dit :

    Salut david,
    Il faut le configurer dans le fichier config.xml de ton module pour déclarer à magento l’existence du script a lire au démarrage du module. Je ne vais pas rentrer dans les détails, car ça fait l’objet d’un prochain tutoriel qui sera publié dans quelques jours. à suivre… :)

  3. lercdur dit :

    Salut,
    J’ai remarqué que tu es un archi expert magento.
    Tu gères un blog, tu es sur fragento et aussi sur le blog français du site officiel.
    Merci pour les tutos très indispensables pour nous débutants.

    J’aimerai savoir exactement l’ordre d’exécution d’un module(magento lit quel fichier récupère quoi,et après va dans quel dossier chercher quoi, quoi ensuite et ensuite … jusqu’à la fin) car trop de dossiers(block,controllers,etc…), de fichiers(config.xml, system.xml,nominterface_nommodule.xml…)

    J’ai développé le mvc en java(jsp) avant de me lancer dans magento. Les concepts sont les mêmes mais la mise en oeuvre est différente.

    Cordialement,
    lerocdur

  4. cédric rousset dit :

    Bonjour,
    Je suis un hyper actif magento :) pas un expert on ne peut pas ce prétendre expert magento ça n’a pas de sens :)
    Pour répondre à ta question difficile de dire. Tous les modules n’utilisent pas la même structure.
    Le mieux c’est que tu commences petit à petit. Regarde, le tutoriel sur la création de module simple tu comprendra, comment construire.
    http://bloggento.fr/module-magento-creation-dun-module-simple-13-/2538
    Il faut commencer petit à petit et s’accrocher :)

    Regarde en premier le tutoriel comment référencer un module
    Et bien sur poser des questions ici ou sur fragento ou le forum officiel
    Bon courage

  5. Pierre FAY dit :

    sinon au pire je viens de faire un autre article pour la suite des tutos, tu peux check ici: http://www.pierrefay.fr/helpers-magento-499

Poster un commentaire

(obligatoire)

(obligatoire)