Raccourcis : Contenu - rubriques - sous rubriques
FR

Piste : 1.3.x 1.1.3

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
fr:tutoriels:jelixnews-1.1:creation-action [2009/03/18 10:51] laurentfr:tutoriels:jelixnews-1.1:creation-action [2012/04/14 20:34] (Version actuelle) – [Un objet réponse personnalisé] laurent
Ligne 1: Ligne 1:
-**PAGE EN COURS DE REDACTION** 
- 
  
 ===== Un peu de théorie ===== ===== Un peu de théorie =====
Ligne 33: Ligne 31:
 En général il y a une méthode @@M@index()@@ pour l'action par défaut. En général il y a une méthode @@M@index()@@ pour l'action par défaut.
  
-Modifions donc cette action par défaut. Pour cela ouvrons le fichier @@F&@controllers/default.classic.php@@. Vous devez avoir ce contenu :+Modifions donc cette action par défaut. Pour cela ouvrons le fichier @@F@controllers/default.classic.php@@. Vous devez avoir ce contenu :
  
 <code php> <code php>
Ligne 70: Ligne 68:
  
  
-Tout le corps de la page, c'est à dire le contenu de la balise html @@E@<body>@@, doit être généré par vous même, via éventuellement le moteur de template de Jelix : [[fr:manuel-1.1:templates|jTpl]]. @@C@jResponseHtml@@ instancie en standard un moteur de template placé dans la propriété @@P@body@@. Le nom du fichier template est à placer dans la propriété @@P@bodyTpl@@.+Tout le corps de la page, c'est à dire le contenu de la balise html @@E@<body>@@, doit être généré par vous même, via éventuellement le moteur de template de Jelix : [[http://docs.jelix.org/fr/manuel-1.1/templates|jTpl]]. @@C@jResponseHtml@@ instancie en standard un moteur de template placé dans la propriété @@P@body@@. Le nom du fichier template est à placer dans la propriété @@P@bodyTpl@@.
  
 ==== Un objet réponse personnalisé ==== ==== Un objet réponse personnalisé ====
Ligne 111: Ligne 109:
 Quand on fait donc @@$this->getResponse('html')@@ dans un contrôleur, nous obtenons alors un objet @@C@myHtmlResponse@@ au lieu de @@C@jResponseHtml@@ (comme c'est le cas par défaut si on ne passe pas par createapp). Quand on fait donc @@$this->getResponse('html')@@ dans un contrôleur, nous obtenons alors un objet @@C@myHtmlResponse@@ au lieu de @@C@jResponseHtml@@ (comme c'est le cas par défaut si on ne passe pas par createapp).
  
 +À propos de "jelix~defaultmain", il n'est pas besoin de mettre le suffixe ".tpl" du nom du fichier, car il s'agit en fait d'un [[http://docs.jelix.org/fr/manuel-1.1/selecteurs|sélecteur]] Jelix. Un [[http://docs.jelix.org/fr/manuel-1.1/selecteurs|sélecteur]] est une chaîne, permettant de désigner facilement une ressource du projet, indépendamment de son emplacement physique.
 +
 +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 [[http://docs.jelix.org/fr/manuel-1.1/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.
  
 ==== Premier affichage ==== ==== Premier affichage ====
Ligne 116: Ligne 117:
 Voyons maintenant ce que génère cette réponse avec le template "jelix~defaultmain", avant même que l'on ait à coder quoique ce soit. Voyons maintenant ce que génère cette réponse avec le template "jelix~defaultmain", avant même que l'on ait à coder quoique ce soit.
  
-Tapons l'adresse suivante dans le navigateur : http://localhost/jelix/actu.org/www/index.php/news/default/index+Tapons l'adresse suivante dans le navigateur (en adaptant le nom de domaine et le chemin jusqu'à actu.org/www selon votre installation): http://localhost/jelix/actu.org/www/index.php/news/default/index
  
 +"news" est le nom du module, "default" le nom du contrôleur, et "index" le nom de la méthode dans le contrôleur. "default" et "index" étant des noms par défaut pour Jelix, vous pouvez, pour cette action, taper juste http://localhost/jelix/actu.org/www/index.php/news/.
  
 +Si vous avez une erreur 404, vérifiez que le chemin est bon, et que apache est configuré avec "AcceptPathInfo on".
  
 +Quand il n'y a pas d'erreur, vous avez cette page :
 +
 +<code>
 +Welcome in your new jelix application
 +
 +no content
 +
 +</code>
 +
 +Si vous indiquez juste http://localhost/jelix/actu.org/www/index.php, vous allez avoir une erreur, car il n'y a pas d'action par defaut défini pour jelix. On va indiquer que l'action index du module news est l'action par défaut de l'appli. Pour cela, ouvrez le fichier de configuration @@F@actu.org/var/config/index/config.ini.php@@ et indiquez-la :
 +
 +<code ini>
 +startModule = "news"
 +startAction = "default:index"
 +</code>
  
  
 ==== Créer un template général ==== ==== Créer un template général ====
  
-Nous avons donc un template principal ("jelix~defaultmain") pour toutes les pages.+Nous avons donc un template principal ("jelix~defaultmain") pour toutes les pages. Comme vous le voyez à l'affichage, ce n'est pas forcément ce que vous voulez. Créer donc un nouveau template général, que vous mettrez dans @@F@modules/news/templates/main.tpl@@ par exemple: 
 + 
 +<code html> 
 +<h1>Actu.org: toute l'actu</h1> 
 + 
 +<div id="maincontent"> 
 +{$MAIN} 
 +</div> 
 + 
 +</code> 
 + 
 +Comme il a été dit auparavant, le contenu du template sera le contenu de la balise @@E@<body>@@. C'est pourquoi vous n'avez pas à mettre les balises standard @@E@<html>@@, @@E@<head>@@, etc... Juste le contenu de la page. 
 + 
 + 
 +"{$MAIN}" affiche une variable de template nommée @@V@$MAIN@@. Dans chaque action, vous devrez indiquer le contenu de cette variable, qui sera dans le cadre de notre application, le contenu spécifique de la page que l'on veut afficher. 
 + 
 +Spécifions maintenant ce template à notre réponse personnalisée dans @@F@responses/myhtmlresponse.class.php@@: 
 + 
 +<code php> 
 +class myHtmlResponse extends jResponseHtml { 
 + 
 +    public $bodyTpl = 'news~main'; 
 + 
 +.... 
 +</code> 
 + 
 +Si vous rafraîchissez http://localhost/jelix/actu.org/www/index.php/news/, vous devriez voir votre nouveau template. 
 + 
  
-==== template de contenu spécifique ====+==== Template de contenu spécifique ====
  
 +Pour notre action principal, nous allons définir un template, dont le contenu sera assigné à la variable @@V@$MAIN@@ du template principal (ce qui vous fera donc deux templates).
  
 Créez un fichier listenews.tpl dans le répertoire //templates// du module. Et mettez y ce contenu : Créez un fichier listenews.tpl dans le répertoire //templates// du module. Et mettez y ce contenu :
Ligne 136: Ligne 183:
 </code> </code>
  
-Comme il a été dit auparavant, le contenu du template sera le contenu de la balise <body>. C'est pourquoi vous n'avez pas à mettre les balises standard <html>, <head>, etc... Juste le contenu de la page. 
  
  
Ligne 148: Ligne 194:
    function index () {    function index () {
       $rep = $this->getResponse('html');       $rep = $this->getResponse('html');
 +
 +      // on définit un titre de page
       $rep->title = 'Dernières actualités';       $rep->title = 'Dernières actualités';
-      $rep->bodyTpl = 'listenews';+ 
 +      // creation d'un objet template pour le contenu spécifique 
 +      $tpl = new jTpl(); 
 + 
 +      // assignation du resultat du template listenews à la variable $MAIN 
 +      $rep->body->assign('MAIN', $tpl->fetch('listenews'))
       return $rep;       return $rep;
    }    }
Ligne 155: Ligne 208:
 </code> </code>
  
 +Rafraichissez la page dans votre navigateur. Vous devriez avoir:
  
-On a donc rajouté une instruction pour indiquer à l'objet réponse que l'on utilise le template **listenews.tpl**.+<code> 
 +Actu.org: toute l'actu
  
-Il n'est pas besoin de mettre le suffixe ".tpl" du nom du fichier, car il s'agit en fait d'un [[fr:manuel-1.0:selecteurs|sélecteur]] Jelix. Un [[fr:manuel-1.0:selecteurs|sélecteur]] est une chaîne, permettant de désigner facilement une ressource du projet, indépendamment de son emplacement physique.+Dernières actualités
  
-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 [[fr:manuel-1.0: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.+Ouverture prochaine de cette rubrique.
  
 +</code>
  
 +ou plus exactement le code HTML suivant :
  
 +<code html>
 +<h1>Actu.org: toute l'actu</h1>
  
 +<div id="maincontent">
 +  <h2>Dernières actualités</h2>
 +  <p>Ouverture prochaine de cette rubrique.</p>
 +</div>
  
-===== Premier affichage ===== 
- 
-Nous sommes maintenant prêt à afficher la première version de notre action. Pour cela, tapez l'url suivante dans votre navigateur : 
- 
-  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. 
- 
-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". 
- 
-On peut indiquer que cette action sera l'action par défaut de l'application. Pour cela, ouvrez le fichier de configuration //actu.org/var/config/index/config.ini.php// et indiquez-la : 
- 
-<code ini> 
-startModule = "news" 
-startAction = "default:index" 
 </code> </code>
  
-Pour afficher notre première page, vous pouvez alors utiliser simplement l'url :  
- 
-  http://localhost/jelix/actu.org/www/index.php 
  
 ==== Problème d'affichage des caractères accentués ==== ==== Problème d'affichage des caractères accentués ====
Ligne 191: Ligne 236:
 Si les caractères accentués s'affichent mal dans votre navigateur, c'est que l'édition de vos fichiers ne s'est pas faite avec le même encodage que celui indiqué dans la configuration de Jelix (qui est par défaut UTF-8). Donc : Si les caractères accentués s'affichent mal dans votre navigateur, c'est que l'édition de vos fichiers ne s'est pas faite avec le même encodage que celui indiqué dans la configuration de Jelix (qui est par défaut UTF-8). Donc :
  
-  * soit vous modifiez la configuration de votre éditeur préféré pour qu'il édite en UTF-8, et il faut alors convertir vos scripts existants pour UTF-8 (ou les réécrire) +  * soit vous modifiez la configuration de votre éditeur préféré pour qu'il édite en UTF-8, et il faut alors convertir vos scripts/templates existants pour UTF-8 (ou les réécrire) 
-  * soit vous modifiez le fichier var/config/defaultconfig.ini.php en changeant la propriété charset (en mettant ISO-8859-1 par exemple).+  * soit vous modifiez le fichier @@F@var/config/defaultconfig.ini.php@@ en changeant la propriété charset (en mettant ISO-8859-1 par exemple). Toutefois, nous vous recommandons de rester en UTF-8, ceci étant le charset universel et de plus en plus adopté sur le web.
  

fr/tutoriels/jelixnews-1.1/creation-action.1237373502.txt.gz · Dernière modification : 2009/03/18 10:51 de laurent

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