- 1
[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
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
Posted by lipki on 01/28/2008 18:21
Ok merci, je ne maitrise pas la logique encore, mais ça va venir.
- 1