Création de controllers

Déclaration de la route

Comme pour les blocks et helpers, nous allons déclarer notre route dans le config.xml.

<frontend>
    <routers>
        <formation_test>
            <use>standard</use>
            <args>
                <module>Formation_Test</module>
                <frontName>maroute</frontName> <!-- Correspond à http://www.maboutique.com/maroute/ -->
            </args>
        </formation_test>
    </routers>
</frontend>

Utilisation des controllers

Par convention, le nom des fichiers controllers s'écrivent XxxxController.php et contiennent des fonctions (appelées actions) qui s'appellent xxxxAction(). Les controllers étendent la classe Mage_Core_Controller_Front_Action

<?php class Namespace_Module_TestController extends Mage_Core_Controller_Front_Action {}

TP - Création d'un formulaire de demande de devis

  • Créer notre controller dans Formation/Test/controllers, nous l'appelerons RequestController.php
  • À l'intérieur, nous allons créer une action quoteAction
<?php
class Formation_Test_RequestController extends Mage_Core_Controller_Front_Action {
    public function quoteAction() {
        $this->loadLayout(); // Charge les fichiers de layout
        $this->renderLayout(); // Affiche la sortie HTML générée par les layouts
    }
}

Testons notre nouvelle page : http://www.maboutique.com/maroute/request/quote/.

  • maroute correspond au frontName déclaré dans le config.xml
  • request correspond au nom du controller
  • quote correspond au nom de l'action

Notre nouvelle page est vide, c'est normal, nous n'avons rien indiqué concernant son contenu dans nos layouts.

Les étapes suivantes :

  1. Ajouter dans notre fichier de layout, les instructions pour afficher un template dans le contenu de la page
  2. Notre template devra être appelé par un de nos blocks (et non core/template)
  3. Le template affiche un formulaire dont l'action du formulaire sera quotepostAction. L'URL n'est pas en dur, mais est le résultat d'une fonction du block
  4. Le formulaire demande à l'utilisateur son nom, son adresse e-mail et son message