- 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

