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
fr:tutoriels:jelixnews-1.1:creation-action [2009/03/18 11:04] 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 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 129: Ligne 130:
 no content 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> </code>
  
Ligne 144: Ligne 152:
  
 </code> </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. "{$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.
Ligne 157: Ligne 168:
 </code> </code>
  
-Si vous rafraichissez http://localhost/jelix/actu.org/www/index.php/news/, vous devriez voir votre nouveau template.+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 171: 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 183: 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 190: 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 226: 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.1237374292.txt.gz · Dernière modification : 2009/03/18 11:04 de laurent

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