Utiliser l'Installer - Créer un grid en admin
Dans mon article précédent je dévoile mon Installer.
Pour vous permettre de prendre en main et vous montrer les possibilités de l'outil je vais vous montrer comment faire un simple grid en admin, en 13mn et 30s.
A vos marques...
Ce tutoriel utilise l'Installer : En savoir plus sur l'Installer pour Magento
Tout d'abord on commence par déterminer ce dont nous avons besoin :
- Un module
Jbh_Grid
- Un modèle
Foo
, une ressourceFoo
et une collectionFoo_Collection
- Un routeur admin et son menu
- Un contrôleur admin
- 2 blocs pour constituer le grid en admin (le container et le grid)
- Un setup MySQL
- Un helper Data pour les traductions, ainsi qu'un fichier de traductions
.csv
Nous ne verrons pas ici comment faire le formulaire pour ajouter/éditer notre objet Foo
.
Création des fichiers grâce à l'Installer
Lançons l'outil : (Voir le README)
$ jbh
The Installer - by jacquesbh
>
On commence par créer notre module :
> mod jbh grid local
Using: Jbh_Grid in local
Jbh_Grid>
Notez qu'on peut lancer l'Installer directement sur le module que l'on souhaite :
$ jbh jbh grid local
The Installer - by jacquesbh
Using: Jbh_Grid in local
>
Ensuite passons à notre "entité" :
Jbh_Grid> ent foo jbh_grid_foo
Vous pouvez bien sûr ne taper que ent
ou entity
et suivre les instructions :
Jbh_Grid> entity
Entity?
> foo
Table?
> jbh_grid_foo
A ce stade nous avons tous nos modèles.
Le routeur en admin :
Jbh_Grid> r admin foo_adminhtml
Pour le menu il nous faudra éditer manuellement le fichier etc/adminhtml.xml
de notre module.
(N'y oublions pas les ACL ;))
Ensuite il nous faut notre contrôleur admin avec l'action grid :
Jbh_Grid> c adminhtml_index grid
Nous en sommes à l'étape où il nous faut créer le grid...
2 possibilités :
- Soit : créer le grid bloc après bloc, initialiser les blocs etc.
- Soit : utiliser la commande grid qui fait (presque) tout à notre place
Le choix est vite fait...
Jbh_Grid> grid foo
Il nous faut le setup pour créer notre table en base de données !
Jbh_Grid> setup
On termine par notre Helper Data : (vide)
Jbh_Grid> h data -
Résumé des commandes
Une fois que vous connaissez les commandes (alias + ordre des arguments) vous pouvez aller vraiment vite !
Vraiment vite... On reprend, en 30 secondes :
$ jbh jbh grid local
The Installer - by jacquesbh
Using: Jbh_Grid in local
Jbh_Grid> ent foo jbh_grid_foo
Jbh_Grid> r admin foo_adminhtml
Jbh_Grid> c adminhtml_index grid
Jbh_Grid> grid foo
Jbh_Grid> setup
Jbh_Grid> h data -
Jbh_Grid>
Le SQL de notre table
Réfléchissons 3 minutes pour construire notre table en base de données :
Complétons notre setup :
Notre menu admin
Il nous faut éditer notre fichier etc/adminhtml.xml
pour ajouter notre menu et les ACLs :
Notre contrôleur admin
On ajoute avant tout la méthode _isAllowed()
à notre contrôleur :
Jbh_Grid> c adminhtml_index _isAllowed:bool
On complète assez rapidement !
Complétons notre grid
Il nous faut ajouter les colonnes à notre grid ainsi que le configurer un minimum...
Le container
Le grid
N'oublions pas les traductions !
Jbh_Grid> __
Where? (enter for front)
> admin
Translate?
> Foo #
Traduction for fr_FR?
> Foo ID
Traduction for en_US?
>
Jbh_Grid> __
Translate?
> Text
Traduction for fr_FR?
> Texte
Traduction for en_US?
>
Jbh_Grid> __
Translate?
> Manage Foos
Traduction for fr_FR?
> Gérer les Foos
Traduction for en_US?
>
Jbh_Grid>
Vous aurez remarqué que lors de l'ajout de la première ligne dans les fichiers de traduction l'Installer nous demande où nous voulons ajouter nos traductions. Tout simplement parce que la manipulation des traductions implique l'ajout d'un bout de config à notre module.
Et ça donne ça, pour le français par exemple :
Conclusion
Au final...
- 30 secondes pour créer notre architecture
- 3 minutes pour créer le SQL et compléter le setup
- 5 minutes pour le fichier
adminhtml.xml
- 5 minutes pour terminer le grid
Ce qu'on obtient : Un module propre, développé avec les conventions Zend Framework
, sans erreur de config.
Surtout... le config.xm
l... <3 <3 <3
Le bonheur quoi...
Vos avis sont les bienvenus !
Vous pouvez télécharger ce module.
Astuce
Pour avoir une licence personnalisée dans le haut de mes fichiers voici la commande que j'ai réellement lancée :
$ LICENSE='WTFPL (http://sam.zoy.org/wtfpl/COPYING)' jbh jbh grid local