Raccourcis : Contenu - rubriques - sous rubriques
FR

Piste :

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
Prochaine révisionLes deux révisions suivantes
tutoriels:principal:creation-action [2008/01/08 11:02] laurenttutoriels:principal:creation-action [2008/05/02 09:52] – édition externe 127.0.0.1
Ligne 1: Ligne 1:
 ====== Création d'une action ====== ====== Création d'une action ======
 +
  
  
Ligne 7: Ligne 8:
 Une action est un élément fondamental du framework. Tout affichage, tout traitement de formulaire, tout appel de service web est une action. Une action est un élément fondamental du framework. Tout affichage, tout traitement de formulaire, tout appel de service web est une action.
  
-Une action est appelée dans le cadre d'une requête d'un type précis et génère une réponse spécifiquedans un format spécifique, qui peut être lié au type de requête en question.+Une action est appelée dans le cadre d'une requête d'un type précis et génère une réponse spécifique dans un format spécifique, qui peut être lié au type de requête en question.
  
 Il existe plusieurs types de requêtes, notamment le type que l'on nomme dans Jelix, "classic", pour lequel une action peut fournir une réponse dans un format quelconque : HTML, XML, etc. C'est pour ce type de requête que vous définirez le plus souvent des actions. En général, ce type de requête fournit ses paramètres dans l'url ou dans le corps de la requête HTTP (méthode POST). Il existe plusieurs types de requêtes, notamment le type que l'on nomme dans Jelix, "classic", pour lequel une action peut fournir une réponse dans un format quelconque : HTML, XML, etc. C'est pour ce type de requête que vous définirez le plus souvent des actions. En général, ce type de requête fournit ses paramètres dans l'url ou dans le corps de la requête HTTP (méthode POST).
Ligne 20: Ligne 21:
  
   - Jelix reçoit une requête HTTP. Il instancie un objet jRequest qui contient les données de la requête, et instancie le contrôleur qui correspond à l'action.   - Jelix reçoit une requête HTTP. Il instancie un objet jRequest qui contient les données de la requête, et instancie le contrôleur qui correspond à l'action.
-  - La méthode du contrôleur correspondante à l'action est executée. La méthode  récupère les paramètres de requête pour déterminer les traitements à suivre.+  - La méthode du contrôleur correspondante à l'action est exécutée. La méthode  récupère les paramètres de requête pour déterminer les traitements à suivre.
   - Le contrôleur exécute les traitements métiers et récupère éventuellement des résultats qui seront utilisés pour l'affichage   - Le contrôleur exécute les traitements métiers et récupère éventuellement des résultats qui seront utilisés pour l'affichage
   - Le contrôleur instancie un objet de type jResponse auquel il assignera les données à afficher, initialisera les templates etc.   - Le contrôleur instancie un objet de type jResponse auquel il assignera les données à afficher, initialisera les templates etc.
   - Jelix récupère cet objet jResponse, invoque la génération du document en sortie et envoi ce dernier au navigateur.   - Jelix récupère cet objet jResponse, invoque la génération du document en sortie et envoi ce dernier au navigateur.
 +
  
  
Ligne 31: Ligne 33:
 Les actions sont implémentées dans ce qu'on appelle des contrôleurs. Les contrôleurs sont des classes contenant des méthodes pour chaque action. Les contrôleurs sont stockés dans des fichiers controllers///nom_controleur//.//type_requete//.php. Les actions sont implémentées dans ce qu'on appelle des contrôleurs. Les contrôleurs sont des classes contenant des méthodes pour chaque action. Les contrôleurs sont stockés dans des fichiers controllers///nom_controleur//.//type_requete//.php.
  
-En généralil y a une méthode index() pour l'action par défaut.+En général il y a une méthode index() pour l'action par défaut.
  
-Modifions donc cette action par défaut. Pour celaouvrons le fichier controllers/default.classic.php. Vous devez avoir ce contenu :+Modifions donc cette action par défaut. Pour cela ouvrons le fichier controllers/default.classic.php. Vous devez avoir ce contenu :
  
 <code php> <code php>
Ligne 47: Ligne 49:
  
 Vous remarquerez qu'il y a certaines conventions de nommage. Les classes contrôleurs ont un nom suffixé par "Ctrl". Ce qui précède le suffixe, "default", est le nom du contrôleur, que vous indiquerez dans le paramètre action, et c'est aussi le préfixe du nom du fichier *.classic.php. Vous remarquerez qu'il y a certaines conventions de nommage. Les classes contrôleurs ont un nom suffixé par "Ctrl". Ce qui précède le suffixe, "default", est le nom du contrôleur, que vous indiquerez dans le paramètre action, et c'est aussi le préfixe du nom du fichier *.classic.php.
 +
  
 ==== Objet réponse ==== ==== Objet réponse ====
Ligne 52: Ligne 55:
 Dans la méthode "index()" du controlleur, on récupère dans la variable $rep une réponse de type "html". Vous obtenez en fait un objet de classe jResponseHtml, dérivant de la classe jResponse.  Dans la méthode "index()" du controlleur, on récupère dans la variable $rep une réponse de type "html". Vous obtenez en fait un objet de classe jResponseHtml, dérivant de la classe jResponse. 
  
-Vous verrez plus tard qu'il existe d'autres types de réponseset que vous pouvez développer vos propres objets response.+Vous verrez plus tard qu'il existe d'autres types de réponses et que vous pouvez développer vos propres objets response.
  
-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. Par exemplespécifions le titre de la page :+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. Par exemple spécifions le titre de la page :
  
 <code php> <code php>
Ligne 68: Ligne 71:
 </code> </code>
  
-Tout le corps de la page, c'est à dire le contenu de la balise html <body>, doit être généré par vous même, via éventuellement le moteur de template de Jelix : [[manuel:templates|jTpl]]. jResponseHtml instancie en standard un moteur de templateplacé dans la propriété body. Le nom du fichier template est à placer dans la propriété bodyTpl. Avant de voir le codevoyons d'abord le contenu du template.+Tout le corps de la page, c'est à dire le contenu de la balise html <body>, doit être généré par vous même, via éventuellement le moteur de template de Jelix : [[manuel:templates|jTpl]]. jResponseHtml instancie en standard un moteur de template placé dans la propriété body. Le nom du fichier template est à placer dans la propriété bodyTpl. Avant de voir le code voyons d'abord le contenu du template.
  
 ==== Le template ==== ==== Le template ====
Ligne 104: Ligne 107:
  
 Un sélecteur comporte un nom de module et un nom de ressource séparés par le caractère "~", comme ceci : **nom_module~nom_ressource**. La partie "**nom_module~**" est facultative quand il s'agit du module courant. Le nom de la ressource n'est pas forcément un nom de fichier, même si la plupart du temps elle désigne un fichier. L'objet qui utilise le sélecteur (ici [[manuel:templates|jTpl]]) sait comment récupérer le fichier correspondant au sélecteur. Vous verrez que les sélecteurs sont abondamment utilisés, et permettent une certaine souplesse et une indépendance vis à vis des chemins de fichiers physiques. Un sélecteur comporte un nom de module et un nom de ressource séparés par le caractère "~", comme ceci : **nom_module~nom_ressource**. La partie "**nom_module~**" est facultative quand il s'agit du module courant. Le nom de la ressource n'est pas forcément un nom de fichier, même si la plupart du temps elle désigne un fichier. L'objet qui utilise le sélecteur (ici [[manuel:templates|jTpl]]) sait comment récupérer le fichier correspondant au sélecteur. Vous verrez que les sélecteurs sont abondamment utilisés, et permettent une certaine souplesse et une indépendance vis à vis des chemins de fichiers physiques.
 +
  
  
Ligne 114: Ligne 118:
   http://localhost/jelix/actu.org/www/index.php?module=news&action=default:index   http://localhost/jelix/actu.org/www/index.php?module=news&action=default:index
  
-Vous verrez alors s'afficher le contenu du template que l'on vient de créer. (Note +Vous verrez alors s'afficher le contenu du template que l'on vient de créer.
  
 Le paramètre **module** indique le nom du module. Le paramètre **action** est le nom de l'action à exécuter dans ce module. Ce nom est constitué de deux parties, séparées par deux points ":" (pour les utilisateurs de jelix 1.0beta3.1 ou précédent, il faut utiliser le caractère "_"). La première partie est le nom du contrôleur, la deuxième le nom de la méthode à exécuter. Si il n'y a pas de ":", jelix considère qu'il s'agit du nom de la méthode dans le contrôleur de nom "default". Le paramètre **module** indique le nom du module. Le paramètre **action** est le nom de l'action à exécuter dans ce module. Ce nom est constitué de deux parties, séparées par deux points ":" (pour les utilisateurs de jelix 1.0beta3.1 ou précédent, il faut utiliser le caractère "_"). La première partie est le nom du contrôleur, la deuxième le nom de la méthode à exécuter. Si il n'y a pas de ":", jelix considère qu'il s'agit du nom de la méthode dans le contrôleur de nom "default".

fr/tutoriels/jelixnews/creation-action.txt · Dernière modification : 2012/04/14 20:40 de laurent

Fils rss des changements récents dans le wiki Creative Commons License