Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [Opened] [Résolu] les parties communes

Posted by Dubphil on 02/17/2008 18:01

Bonjour, après avoir testé Symfony et Zend me voilà ici et je peux vous dire que je respire un peu d'air frais, ça fait du bien... Déjà c'est le premeier framework que je test et qui fait à peu près ce qui est décris dans la doc contrairement à Symfony et Zend... Voilà pour mes premières impressions sur Jelix ^^

Venons en a mon problème, car oui je suis bloqué quand-même mais la solution me parait moins obscure à trouver que dans le cas de Symfony par exemple.

Voilà où j'en suis :

j'ai crée un module "main" qui contient dans modules/main/zones les classes head.zone.php,menu.zone.php et foot.zone.php, j'ai également les templates qui vont bien dans modules/main/templates : head.tpl,menu.tpl, foot.tpl et content.tpl . J'ai aussi le fichier responses/myHtmlResponse.class.php dont voici le code :

 <?php
 
 require_once (JELIX_LIB_RESPONSE_PATH.'jResponseHtml.class.php');
 
 class myHtmlResponse extends jResponseHtml {
 
 
    public $bodyTpl = 'main~content';
 
    // modifications communes aux actions utilisant cette reponses
    protected function _commonProcess(){
        $this->body->assignZone('HEAD','main~head');
        $this->body->assignZone('MENU','main~menu');
        $this->body->assignZone('FOOT','main~foot');
        $this->body->assignIfNone('CONTENT','No content');
        $this->addCSSLink('design/screen.css');
    }
 }

 ?>

donc je m'attend à ce que lorsque je veux afficher une page d'un autre module toutes ses zones soient affichées or que neni :

voici par exemple ce que j'ai mis dans le controller d'un de mes autres modules :

 class defaultCtrl extends jController {
     /**
     *
     */
     function index() {
         $rep = $this->getResponse('html');
         $fact = jDao::get('actualites~actualites');
         $liste = $fact->findAll();
         $rep->body->assign('liste', $liste);
 
         return $rep;
     }
 }

en fait ça ne m'affiche que le contenu du fichier modules/main/templates/content.tpl

il y a un truc fondamental que je n'ai pas dû comprendre, je précise que je suis débutant en POO et que je n'ai peut-être pas assimilé tous les concepts...

Merci d'avance ! et bravo pour la simplicité de ce framework !

Philippe

  [Opened] Re: les parties communes

Reply #1 Posted by Dubphil on 02/17/2008 18:06

J'ai oublié de préciser que j'ai bien ce paramètre dans var/config/defaultconfig.ini.php :

 [responses]
 html=myHtmlResponse

  [Opened] Re: les parties communes

Reply #2 Posted by Dubphil on 02/17/2008 18:55

bon en fait j'ai eu un petit éclaircissement sur le channel IRC (merci BaGroN) et je n'avais pas du tout mis les variables qu'il fallait dans modules/main/templates/content.tpl pour afficher les zones donc j'ai réécris ce fichier et le voici :

 <div id="page">
 {$HEAD}
 {$MENU}
 <div id="content">
 {$CONTENT}
 </div>
 {$FOOT}
 </div>

mais en fait voilà ce que je craignais, la liste des actualités ne s'affiche pas cela signifie qu'il faudrait que je le prévoie dans le fichier modules/main/templates/content.tpl ? donc ma méthode n'est pas bonne...

  [Opened] Re: les parties communes

Reply #3 Posted by Dubphil on 02/17/2008 19:14

Bon ben voilà j'ai compris le truc tout seul comme un grand, j'espère que ce post va aider les débutants ;)

 class defaultCtrl extends jController {
     /**
     *
     */
     function index() {
         $maintpl = new jTpl();   // il me manquait cet objet
         $rep = $this->getResponse('html');
         $fact = jDao::get('actualites~actualites');
         $liste = $fact->findAll();
         $maintpl->assign('liste', $liste); // l'assignation de la liste doit se faire dabord sur cet objet
         $rep->body->assign('MAIN', $maintpl->fetch('listactualites')); // et enfin on assign au templates commun ^^
         return $rep;
     }
 }

  [Opened] Re: [Résolu] les parties communes

Reply #4 Posted by laurentj on 02/17/2008 23:07

Bonsoir,

Bienvenue Dubphil sur Jelix !

Désolé, il semble qu'il y ait eu peu de monde sur le forum ce week-end (en particulier moi j'étais trop occupé). M'enfin j'ai vu que tu es arrivé à tes fins. Et la solution que tu as trouvé est la bonne.

Bonne continuation :-)

 
Page
  1. [Résolu] les parties communes