Installer le framework et créer son premier site
Par Ekilio le mardi, novembre 11 2008, 15:30 - Documentation - Lien permanent
Voici la marche à suivre pour créer un premier module, très simple, pour le framework, et ainsi créer un premier site multi-langues en seulement quelques minutes !
Voici la marche à suivre pour créer un premier module, très simple, pour le framework, et ainsi créer un premier site multi-langues en seulement quelques minutes !
Téléchargement et installation
Pour commencer, télécharger la dernière version à jour du framework: Framework Ekilio
Notez que vous trouverez toujours la dernière version à jour sur ce billet : Framework Ekilio. Ensuite, décompressez l’archive dans le répertoire de votre choix.
Il ne vous reste plus qu’à configurer le framework de manière à pouvoir utiliser votre base de données mysql. Notez que si vous ne prévoyez pas d’utiliser un jour MySQL, cette étape est facultative, mais le système d’identification du framework est basé sur ce moteur de base de données.
Pour configurer MySQL, ouvrez le fichier configs/database.php. Vous devriez trouver quelque chose de ce style:
<?php 'host' => 'localhost', 'user' => 'root', 'pass' => '', 'database' => 'base' ); ?>
Il vous suffit alors de rentrer les identifiants corrects. Attention, la base de données doit déjà exister. Et voila, le framework est en place !
Création d’un premier module
Pour commencer, nous allons maintenant créer un simple module permettant d’afficher un texte que nous aurons défini au préalable. Cela va se faire en plusieurs parties, comme toujours dans l’utilisation de ce framework.
Création de la classe
Pour commencer, nous allons créer la classe qui va gérer l’affichage de ce texte. Cette classe sera ouverte à tous. Toutes les modules du framework doivent hériter de la classe module. Il n’est jamais nécessaire d’inclure une classe, chaque classe étant chargée dynamiquement si elle devient nécessaire.
Voici le code d’un module simple :
<?php class monModule extends module { protected $nomModule = 'monModule'; public function index() { $this->nomVue = 'bonjour'; } } ?>
Je vais détaille un peu cette source, même si elle est assez simple.
Ligne 3, vous noterez que comme je l’ai indiqué, la classe doit hériter de la classe module. Attention, la classe module est abstraite, vous ne pouvez pas faire $variable = new module() ! Elle sert uniquement à être hériter et donc à créer de nouveaux modules. Notez que pour éviter de gros (gros) problèmes, aucun module ne doit s’appeller global, mais c’est de toutes façons un mot-clef réservé de PHP.
Ligne 5 se trouve une définition de variable qui est très importante dans tous les modules. Il s’agit du nom du module. Ce nom doit simplement être le nom de la classe, et il doit être présent, de la même manière que dans cet exemple, dans tous vos modules.
Ligne 7 débute l’unique action de notre module. Toute sorte de fonction peuvent bien évidement être définie dans un module, mais les actions doivent respecter certains critères :
- Une action ne doit jamais avoir de paramètres. Elle peut bien sûr récupérer les variables $_POST et $_GET, mais pas de paramètres. Les paramètres, caylemal.
- Le nom des actions ne doit comporter que des chiffres et des lettres (majuscules ou minuscules). En particulier, les _ ne sont pas utilisables dans les noms des actions.
- Une action ne doit rien retourner. Enfin, elle peut, mais ce retour ne sera pas traité.
Ligne 9 enfin, vous trouverez encore une ligne nécessaire, la définition de la vue. Cette ligne doit être présente dans toutes les actions : c’est elle qui défini quelle vue doit être chargée et utilisée pour cette action. C’est la seule ligne qui soit absolument nécessaire dans une action.
Et voila. Enregistrez simplement ce code dans un fichier nommé monModule.php que vous placerez dans le répertoire modules. Toutes les classes que vous utiliserez doivent impérativement se trouver dans ce répertoire, et respecter cette convention de nommage : le nom du fichier est le nom de la classe, avec l’extension .php.
Création de la vue
Maintenant, il nous faut créer la vue qui va correspondre à notre action. Pour cela, il va nous falloir créer un autre fichier, que nous allons simplement faire comme ceci :
Simple, non ? Ce fichier doit être enregistré dans le répertoire vues et porter le nom monModule_bonjour.html. Vous noterez la syntaxe du nom : il s’agit toujours du nom du module, suivi par un tiret bas (_) et le nom de la vue, lequel est indiqué dans le module par la ligne $this->nomVue = ‘bonjour’;
(ligne 9 de l’exemple ci-dessus).
Test et création du lien.
Et voila ! Votre premier fichier est utilisable. Vous pouvez le voir en naviguant à l’adresse d’installation du framework, et en ajoutant index.php?module=monModule&action=index
Par exemple, si vous avez installez le framework sur votre serveur local dans le dossier fwk, vous trouverez votre réalisation à cet endroit :
http://127.0.0.1/fwk/index.php?module=monModule&action=index
Mais bon, vous avouerez que ce n’est pas particulièrement pratique pour y accéder. C’est pourquoi nous allons créer un lien vers la page, dans le menu principal.
C’est l’occasion pour moi de signaler une petite chose : par défaut, c’est le module defautSite qui gère votre site, et le module defautIndex qui gère la page d’accueil. Le module defautMenu, quand à lui, s’occupe de créer votre… menu (un point si vous aviez deviné).
Il va donc nous falloir modifier le module defautMenu… ou plus exactement sa vue. Car, vous vous en souvenez, c’est la vue qui détermine ce qui doit être affiché. Par défaut toujours, il n’y a qu’une seule vue correspondant au menu, et cette vue est vide ; il va donc vous falloir ajouter un lien, tout simplement, par exemple, avec ce code :
Enregistrez, et vous aurez alors devant vos yeux ébahis (si si, je sais que vous êtes ébahis) le menu avec un lien vers votre propre module !
Vous pouvez, aussi, voir le résultat de tout ceci ici
Ajout de la gestion des langues
Et oui, je vous l’avez promise et pourtant, elle n’est pas là… c’est la gestion des langues ! Car le framework gère cette fonctionnalité en natif. Pour l’implémenter, il va tout d’abord falloir modifier légèrement notre vue. Ouvrez le fichier vues/monModule_bonjour.html et remplacez son contenu par ceci :
Si vous actualisez maintenant et que vous allez sur votre module, vous constaterez un résultat pour le moins… décevant. Et pour cause : vous n’avez pas défini de traductions !
Au passage, ceux d’entre vous familiers avec les systèmes des templates auront peut-être reconnu là une variable de langue. A vrai dire, vous auriez aussi bien pu l’appeller {BONJOUR}, mais par soucis de clarté et pour éviter d’écraser une variable avec l’autre, je vous invite fortement à préfixer vos variables de langue par un L_. Notez que les variables doivent absoluement être en majuscules dans le fichier de vue.
Il va donc nous falloir définir les traductions. Si vous vous rendez maintenant dans le dossier langues/fr, vous noterez qu’un nouveau fichier a été créé : monModule.mlang. C’est un fichier de langue qui est créé automatiquement par le framework, et chaque module en possède un. Mais comme il n’est pas franchement pratique à éditer, une alternative existe !
Créez simplement un nouveau fichier PHP. Dedans, indiquez ceci :
<?php 'L_BONJOUR' => 'Bonjour le monde !'; } ?>
Une petite explication : ce fichier de langue doit contenir un tableau associatif nommé langueC. Chaque clef du tableau associatif doit être une variable de langue qui sera utilisée dans les modules ou dans les vues, et chaque valeur la traduction dans la langue voulue.
Enregistrez-le dans dossier langues/fr, sous le nom monModule.php. Actualisez et constatez… qu’il ne se passe rien ! Et oui, par défaut, votre beau fichier tout neuf n’est pas pris en compte. Il va vous falloir forcer le framework à re-générer le fichier de langue. Pour ça, rien de plus simple : supprimez simplement le fichier langues/fr/monModule.mlang. Vous devez supprimer ce fichier pour chaque langue pour laquelle vous souhaitez voir le fichier se regénérer - notez que même malgrès cela, il ne se re-génèrera pas tant que la langue n’est pas utilisée.
Et voila ! Si vous actualisez maintenant, vous verrez votre texte revenu à la normal.
Pour pimenter un peu la chose, nous allons maintenant faire la traduction en anglais. Pour cela, dans le dossier langues, créez un répertoire en. Et dans ce répertoire, créez un autre fichier monModule.php, avec ce contenu :
<?php 'L_BONJOUR' => 'Hello World !'; } ?>
Je ne pense pas qu’il soit nécessaire d’expliquer ici. Maintenant, il va vous falloir passer le framework en anglais pour tester le résultat. La langue du framework est défini par l’utilisateur si celui-ci est connecté, mais ici, ce n’est pas le cas ; c’est donc la langue par défaut qui est utilisée. Celle-ci est définie par la clef defautLangue de la configuration globale. Vous pourriez la modifier par le biais de la création d’un fichier, mais nous allons faire plus simple : ouvrez le fichier configs/global.mconf avec un éditeur de texte (le bloc-note par exemple). Vous devriez voir ceci :
a:4:{s:12:"moduleDefaut";s:11:"defautIndex";s:12:"actionDefaut";s:5:"index";s:13:"moduleGeneral";s:10:"defautSite";s:12:"defautLangue";s:2:"fr";}
A la fin de la ligne, remplacez simplement fr par en. Sauvegardez, actualisez, admirez.
Et tant que vous y serez, si vous voulez juste tester, vous pouvez aussi admirer ici et là

