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.