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

  [Opened] Structure commune a tous le site

Posted by lipki on 01/28/2008 17:01

Je cherche a implémenter Personnalisation de réponse commune

Je me trouve coincé en ajoutant un jControllerDaoCrud

Voila ce que je fait :

myHtmlResponse.class.php

 (...)
 // modifications communes aux actions utilisant cette reponses
 protected function _commonProcess(){
 	$this->title .= ($this->title !=''?' - ':'').'Intranet';
 	
 	$this->bodyTpl = 'main~calx';
 	$this->body->assignZone('sidebar', 'main~sidebar');
 	$this->body->assignIfNone('page_title','Intranet');
 	
 	$this->body->assignIfNone('CALX', '<p>aucun contenu</p>');
 	
 	global $gJConfig;
 	$chemin = 'http://'.$_SERVER['HTTP_HOST'].$gJConfig->urlengine['basePath'].'../var/themes/'.$gJConfig->theme.'/';
 	$this->addCSSLink($chemin.'css/base.css');
 	$this->addCSSLink($chemin.'css/sidebar.css');
 }
 (...)

calx.tpl

 <div id="page">
 	<div id="header">
 		<h1><a href="./" title="Page d'accueil">{$page_title}</a></h1>
 	</div>
 	<div id="content">
 		{$CALX}
 	</div>
 	<div id="sidebar">
 		{$sidebar}
 	</div>
 	<div id="footer">
 		blabla
 	</div>
 </div>

default.classic.php

 (...)
 function index() {
     	
		// création de la réponse
		$maintpl = new jTpl();
		$rep = $this->getResponse('calx');
		$rep->title = 'Dernières actualités';
 		
		// création de la liste des news
		$fact = jDao::get('news~di_news');
		$liste = $fact->findAll();
 		
		$maintpl->assign('liste', $liste);
 		
		$rep->body->assign('CALX', $maintpl->fetch('listenews'));
		return $rep;
 		
 }
 (...)

J'usqu'ici tout va bien, listenews ce met bien a la place de {$CALX}.

mais si j'utilise un jControllerDaoCrud

di_commandes.classic.php

 class di_commandesCtrl extends jControllerDaoCrud {
 (...)
 protected function _getResponse(){
     	
         $maintpl = new jTpl();
         $rep = $this->getResponse('calx');
         $rep->body->assign('CALX', $maintpl->fetch('commandes~main'));
         return $rep;
 		
 }
 (...)

main.tpl

 <div class="cadre">
 	<h1>Liste des commandes</h1>
 
 	{$MAIN}
 
 </div>

Undefined index: MAIN

Cette variable MAIN est censé être crée par le jControllerDaoCrud mais il me met une erreur.

Comment ça ce fait ??

ps :Je peut essayer de rééxpliquer si ce n'est pas clair.

  [Opened] Re: Structure commune a tous le site

Reply #1 Posted by laurentj on 01/28/2008 17:13

Salut,

Si tu regardes la doc de référence de jControllerDaoCrud, tu as une propriété, $templateAssign, qui est censé contenir le nom de la variable de template dans laquelle mettre le contenu principal généré par le contrôleur.

Bref, ton controleur devient :

  class di_commandesCtrl extends jControllerDaoCrud {
       protected $templateAssign = 'CALX';
  
       protected function _getResponse(){   	
          $rep = $this->getResponse('calx');
          return $rep;
       }
  ...
  }

Note aussi que tu as une erreur dans ta réponse commune :

	global $gJConfig;
	$chemin = 'http://'.$_SERVER['HTTP_HOST'].$gJConfig->urlengine['basePath'].'../var/themes/'.$gJConfig->theme.'/';
	$this->addCSSLink($chemin.'css/base.css');
	$this->addCSSLink($chemin.'css/sidebar.css');

On ne met jamais de liens vers des fichiers de var/. Ce qui est dans var n'est pas censé être accessible depuis l'exterieur, seul les fichiers dans www/ le sont.

Pour la manipulation des thèmes, regarde la doc correspondante dans le manuel. Ton bout de code devrait donc être :

	global $gJConfig;
	$chemin = 'http://'.$_SERVER['HTTP_HOST'].$gJConfig->urlengine['basePath'].'themes/'.$gJConfig->theme.'/';
	$this->addCSSLink($chemin.'css/base.css');
	$this->addCSSLink($chemin.'css/sidebar.css');

et encore, tu pourrais mettre ici juste un lien sans le nom de domaine (ça sert à rien ici) :

	global $gJConfig;
	$chemin = $gJConfig->urlengine['basePath'].'themes/'.$gJConfig->theme.'/';
	$this->addCSSLink($chemin.'css/base.css');
	$this->addCSSLink($chemin.'css/sidebar.css');

  [Opened] Re: Structure commune a tous le site

Reply #2 Posted by lipki on 01/28/2008 18:21

Ok merci, je ne maitrise pas la logique encore, mais ça va venir.

 
Page
  1. Structure commune a tous le site