Créez votre Controller sur Magento

Dans ce tutoriel vous apprendrez à créer un controller sous Magento. Si vous n'avez pas lu les premiers articles, je vous conseille fortement de le faire. Sous magento, vous accedez à votre controller via l’url : http://votresite.com/module/methode/

Vous commencez donc par créer votre module :

1- Créer le dossier dans /app/code/local/Pfay/Films/ Vous créez ainsi votre namespace Pfay et votre module Films. 2- Activez le module dans magento : Ajoutez un fichier Pfay_Films.xml dans /app/etc/module/ Et insérez dedans le code suivant

   <config>
      <modules>
        <Pfay_Films>
            <active>true</active>
            <codePool>local</codePool>
         </Pfay_Films>
       </modules>
    </config>
    
Ce fichier permet de déclarer tous les modules de votre namespace Pfay, vous mettrez entre le balises « modules » vos déclarations de modules les unes à la suite des autres.

<Pfay_Films>
   <active>true</active>
   <codePool>local</codePool>
</Pfay_Films>

Pfay_Test vous permet de déclarer le module Test de votre namespace Pfay. active : true = le module est active false = le module n’est pas activé codePool : Le module se trouvera dans le dossier local car c’est un module que nous avons créé nous même (rappelez vous la leçon 1). Magento trouvera donc les fichiers de ce module dans le dossier /app/code/local/Pfay/Films/

Maintenant, créons le controller :

allez dans /app/code/local/Pfay/Films/ 1- Créez le dossier /app/code/local/Pfay/Films/controllers/ 2- A l’intérieur créer un fichier IndexController.php qui contiendra :

class Pfay_Films_IndexController extends Mage_Core_Controller_Front_Action
{
   public function indexAction()
   {
     echo 'test index' ;
   }

   public function mamethodeAction()
   {
     echo 'test mamethode';
    }
}
Maintenant, si vous allez sur http://votresite.com/test/index que ce passe t’il ? Effectivement…vous ne trouvez pas la page, il y a une erreur car vous n’avez pas encore déclaré le controller dans le module.

Config.xml, le fichier pour configurer votre module :

De la même manière que vous avez déclaré votre module pour que magento le prenne en compte dans Pfay_Films.xml , il faut que dans le fichier config.xml de votre module, vous déclariez aussi votre controller . Mangento va ainsi trouver votre fichier Pfay_All.xml, il va aller dans votre dossier /app/code/local/Pfay/Films/etc/ et va lire le fichier config.xml pour savoir ou aller chercher votre controlleur et comment fonctionne votre module. Créez donc dans votre dossier Test, un dossier etc/ avec dedans config.xml. config.xml contiendra :

<config>
     <modules>
        <Pfay_Films>
          <version>1.0.0</version>
        </Pfay_Films>
     </modules>
     <frontend>
       <routers>
          <routeurfrontend>
              <use>standard</use>
              <args>
                 <module>Pfay_Films</module>
                 <frontName>films</frontName>
              </args>
           </routeurfrontend>
       </routers>
    </frontend>
</config>
Explications :

<modules>
  <Pfay_Films>
    <version>0.1.0</version>
   </Pfay_Films>
</modules>
Dans cette partie, on déclare l’identité du module, pour que magento puisse vérifié que le module que vous avez déclaré (dans votre fichier Pfay_Films.xml) est bien celui là et le numéro de version vous permet les mises a jour de votre module.

<routers>
     <routeurfrontend>
        <use>standard</use>
          <args>
             <module>Pfay_Films</module>
             <frontName>films</frontName>
          </args>
     </routeurfrontend>
</routers>
ce code vous permet de déclarer un routeur « routeurfrontend » qui est en fait la route utilisé par magento pour accéder a votre controlleur. Dans notre exemple, le routeur est de type « standard », (c'est-à-dire que c’est un module qui s’affichera sur le frontend). Le nom du module est Pfay_Films et le raccourci pour y accéder via l’url est films ainsi quand on tapera http://votresite.com/films/index,on arrivera sur la méthode index de votre controlleur IndexController.php (de votre dossier controllers) Vous pouvez aussi y accéder en utilisant votre routeur a la place du frontName. http://votresite.com/routeurfrontend/index/   Testez maintenant votre module : http://votresite.com/test/index vous renvoie : « test index »(vous pouvez rajouter /index a la fin si vous voulez pour appeler la méthode index mais par défaut, si rien n'est précise il appelle la méthode qui s'appellera "index") http://votresite.com/test/index/mamethode vous renvoie : « test ma methode » Vous savez maintenant créer un controller. Essayez maintenant de bien comprendre ceci en le refaisant chez vous et ça devrait aller pour passer à la suite.
Documents disponibles pour cet article :
Les livres qui peuvent vous aider :
  • Livre Magento Developer's Guide by Alan Mc Gregor
  • Livre Magento Performance Optimization
  • Livre Grokking Magento Vinai
Questions sur cette leçon
Pas de questions pour cette leçon. Soyez le premier !

Vous devez etre connecté pour demander de l'aide sur une leçon.