Raccourcis : Contenu - rubriques - sous rubriques
FR

Piste: 1.0.2

Wiki: Plan du site - Derniers changements - Back link

Mini Tutoriel pour Jelix 1.0.2 et inférieur

Ce tutoriel a pour but de vous montrer succinctement comment on réalise une application.

Ce tutoriel concerne Jelix 1.0.2 et les versions précedentes.

Téléchargement et installation

Pour commencer, téléchargez l'édition "Developer" de Jelix. Jelix nécessite au moins PHP 5.2.

Décompressez ensuite l'archive obtenue avec des logiciels comme winzip, unzip ou tar. Par exemple, avec tar :

tar xvzf jelix-1.0-dev.tar.gz

Vous obtenez un répertoire jelix-1.0/lib/ dans lequel vous avez plusieurs répertoires contenant toutes les bibliothèques utilisées par jelix, ainsi que les fichiers propres à jelix dans jelix-1.0/lib/jelix/.

Pour ce tutoriel, déplacez le répertoire jelix-1.0 dans le répertoire de votre site web, de manière à ce qu'il soit accessible par une URL du genre http://localhost/jelix-1.0/. (vous pouvez renommer jelix-1.0 comme vous le souhaitez).

Il est possible de télécharger le code de ce tutoriel aux formats zip ou gzip.

Scripts de Jelix

L'édition Developer de Jelix est fournie avec un script jelix.php, qui permet de créer et modifier facilement les fichiers d'une application. Ce script est situé dans jelix-1.0/lib/jelix-scripts/.

Il faut invoquer jelix.php avec la version ligne de commande de PHP, depuis une console sous Linux ou l'invite de commandes sous Windows.

Pour commencer, stockez le nom de l'application dans la variable d'environnement JELIX_APP_NAME :

  export JELIX_APP_NAME=hello        #sous linux
  set JELIX_APP_NAME=hello           #sous windows

puis allez dans le répertoire des scripts :

   cd lib/jelix-scripts/          #sous linux
   cd lib\jelix-scripts\          #sous windows

il sera alors possible de lancer la commande comme suit :

php jelix.php nom_commande [options] [paramètres]

Création d'une application

Créons l'arborescence de l'application au moyen de la commande createapp :

php jelix.php createapp

Vous obtenez alors un répertoire hello/ situé au même niveau que le répertoire lib/ (d'après le nom stocké dans la variable d'environnement). Son contenu est le suivant :

hello/
   modules/      les modules propres à votre application
   plugins/      les plugins propres à votre application
   var/
       config/   les fichiers de configuration de votre application
       log/      les éventuels fichiers journaux
       themes/   les différents thèmes possibles dans votre application
       overloads/  contiendra les différents fichiers que vous aurez redéfinis, issus de modules tiers.
   www/          la racine du site

Création d'un module

Un module “hello” est automatiquement créé dans le répertoire modules/ lorsque l'on utilise createapp. Un module représente une partie de votre application. Il en faut au moins un dans une application.

Voici le répertoire créé automatiquement :

 hello/modules/
           hello/              le répertoire du module
               module.xml          fichier décrivant l'identité du module
               controllers/       les classes de traitement des actions
                   default.classic.php   un controleur par défaut
               classes/            vos classes métiers et services
               daos/               les fichiers de mappings relationnel-objet
               locales/            fichiers de langues (fichiers "properties")
                   en_EN/
                   fr_FR/
               templates/          templates du module
               zones/              objets traitant des zones spécifiques dans une page

Si vous voulez créer d'autres modules, vous pouvez utiliser la commande createmodule :

php jelix.php createmodule hello2

Implémentation d'une action

Implémentons l'action par défaut. Une action est un traitement affecté à une URL précise de votre application. Ouvrez le fichier hello/modules/hello/controllers/default.classic.php, il contient :

class defaultCtrl extends jController {
 
   function index () {
      $rep = $this->getResponse('html');
 
      return $rep;
   }
}

Nous récupérons ici un objet jResponseHtml identifié par le type “html”, et nous le retournons pour que son contenu soit renvoyé au navigateur.

Objet réponse

L'objet jResponseHtml s'occupe de générer une réponse en HTML (donc une page en HTML). Il génère automatiquement la partie <head> du HTML, à partir de certaines de ses propriétés. Définissons le titre de la page :

   $rep->title = 'Hello World !';

Par défaut, jResponseHtml utilise un template pour générer le corps de la page (le contenu de <body>). Vous devez donc indiquer quel template vous voulez utiliser. Le nom du fichier template doit être placé dans la propriété bodyTpl. Ici, il s'agit du fichier hello.tpl.

   $rep->bodyTpl = 'hello';

On ne met pas la partie “.tpl” car le contenu de la chaîne est en fait un sélecteur Jelix. Un sélecteur est un raccourci pour désigner une ressource d'un module.

Notez que vous pouvez réaliser vos propres objets réponse (dérivant éventuellement de la classe jResponseHtml), et de ce fait, y mettre tous les traitements de préparation communs à plusieurs ou toutes vos actions, choses que vous n'aurez pas alors à dupliquer dans chaque action (comme le nom du template, l'inclusion de zones communes etc..).

Le template

Créez le fichier hello.tpl dans le répertoire templates du module. Et mettez-y ce contenu :

  <h2>Hello {$nom} !</h2>
  <p>Bienvenue dans Jelix !</p>

“{$nom}” est une variable de template : elle sera remplacée par la valeur que vous donnerez, comme dans cet exemple :

   $rep->body->assign('nom','Moi');

La propriété body de l'objet jResponseHtml est un objet jTpl, le moteur de template fourni dans Jelix.

En résumé

Le code du contrôleur doit maintenant ressembler à ceci :

class defaultCtrl extends jController {
 
   function index () {
      $rep = $this->getResponse('html');
      $rep->title = 'Hello World !';
 
      $rep->bodyTpl = 'hello';
      $rep->body->assign('nom','Moi');
 
      return $rep;
   }
}

Premier affichage

Nous sommes maintenant prêts à afficher notre page. Votre application est accessible normalement via l'URL http://localhost/jelix-1.0/hello/www/. Pour lancer l'application, tapez l'URL suivante dans votre navigateur :

http://localhost/jelix-1.0/hello/www/index.php?module=hello&action=default:index

Vous verrez alors s'afficher votre page HTML avec le message de bienvenue.

Bien sûr, à l'avenir, vous pourrez configurer votre application et votre serveur de manière à avoir des URLs plus simple. En particulier, vous pouvez configurer le serveur de manière à spécifier le “DocumentRoot” du site sur le répertoire jelix-1.0/hello/www (et donc éviter d'avoir à taper le chemin jelix-1.0/hello/www). Et puis sachez que Jelix peut prendre en charge les URLs significatives pour éviter tout ces paramètres disgracieux.

Note :

  • Pour ceux qui testent avec Jelix 1.0 beta3.1 ou inférieur, il faut taper default_index et non default:index dans l'URL.

Si vous voulez faire de cette action la page par défaut, éditez le fichier hello/var/config/index/config.ini.php et modifiez les paramètres startModule et startAction :

startModule="hello"
startAction="default:index"

Vous pouvez alors taper simplement dans le navigateur :

 http://localhost/jelix-1.0/hello/www/index.php

Récupération de paramètres

Maintenant, il serait intéressant de pouvoir indiquer en paramètre de l'URL le nom que l'on affiche dans le template. Par exemple pouvoir indiquer “Robert” :

 http://localhost/jelix-1.0/hello/www/index.php?nom=Robert

Remplaçons alors dans le contrôleur cette ligne :

 $rep->body->assign('nom','Moi');

par ceci :

   $nom = $this->param('nom');
   $rep->body->assign('nom', $nom);

Et tapez l'URL précédente dans votre navigateur. vous devriez voir afficher :

   Hello Robert !

   Bienvenue dans Jelix !

Conclusion

Ce mini tutoriel vous a fait découvrir les premiers concepts de base de Jelix. Vous pouvez continuer à découvrir les possibilités du framework en lisant le tutoriel principal.


fr/tutoriels/minitutoriel/1.0.2.txt · Dernière modification: 2012/04/14 21:50 par laurent
Fils rss des changements récents dans le wiki Creative Commons License