Développer de nouvelles fonctionnalités dans Magento Traitement d'une requête dans Magento

Pour illustrer l'intérêt de l'architecture de Magento, nous allons donc suivre, pas à pas, la génération d'une page de Magento (voir Figure 19.3).


figure 19.3. diagramme simplifié de séquence de chargement d'une page.
Figure 19.3. Diagramme simplifié de séquence de chargement d'une page. © Pearson

Le schéma montre bien le modèle MVC (Modèle, Vue, Contrôleur) en action. Nous retrouvons le nom de certains dossiers dans les noms d'objets. La logique est respectée !

La partie Vue est complexe, mais apporte une grande souplesse sur la génération du contenu et son apparence. C'est à ce niveau que les thèmes sont utilisés (layouts et templates).

Le rôle du contrôleur n'apparaît pas dans le schéma. Pourtant, tout repose sur lui quand l'application doit traiter la requête entrante (Étape 2). Nous allons donc détailler la chronologie entre l'arrivée de la requête et l'action d'un module :

1. Grâce aux règles de réécriture d'adresses de Magento, le serveur Web renvoie la requête au fichier index.php placé à la racine du site (unique point d'entrée dans l'application).

2. Le fichier index.php démarre l'application (fichier app/Mage.php) et transmet les éventuelles variables d'environnement qui définissent quel site et quelle vue utiliser.

3. Le fichier app/Mage.php (le bootstrap) initialise l'application et met en place ses éléments fondamentaux : événements, collections, configuration, exceptions, cache, modules, connexion aux ressources, etc.

4. Le contrôleur frontal (front controller) analyse la requête et la transmet aux routeurs (routers) qui se chargent de répartir les actions (dispatcher) vers les modules.

5. Si la requête correspond à l'action d'un module, le contrôleur de ce module prend alors le relais pour traiter l'action.


Ce système repose sur une syntaxe très précise des adresses :

 http://[site]/[module]/[contrôleur]/[action]

 [site] Adresse de base du site.
[module] Nom frontal du module (frontName) défini dans la configuration du module.
 [contrôleur] Alias du contrôleur à interroger.

 [action] Action du contrôleur à exécuter.


Des paramètres peuvent éventuellement compléter l'adresse. Ils s'ajoutent en fin d'adresse et utilisent le caractère "/" comme séparateur :

 http://www.example.com/poll/vote/add/poll_id/2/


Cette requête ajoute un vote à un sondage : elle appelle l'action add du contrôleur vote du module poll et passe l'identifiant du sondage concerné en paramètre (poll_id=2).

Finalement, Magento se révèle simple, une fois que ce principe est connu !