Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 19-03-2009 09:18:29

kaboume
Membre
Lieu: Bagneux
Date d'inscription: 21-09-2007
Messages: 24
Site web

Include dans un phtml ?

Hello,

Question toute conne :

Je souhaite inclure dans mon phtml un autre phtml ou le rendu d'une action pariculière.

En effet, je souhaite que mon header et mon footer soient inclus dans toutes mes actions.

Quelles sont les solutions possibles ?

Merci d'avance.
Eric

Hors ligne

 

#2 19-03-2009 09:27:35

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: Include dans un phtml ?

Salut, j'ai effectué la même opération que toi, et voila ce que j'ai fait. Je suis loin d'etre un expert cependant, donc peut etre qu'il faudra me corriger. Voilà ce que j'ai fait :

Dans mon fichier bootstrap (index.php du dossier html (ou public ):

Code:

$actionStack = Zend_Controller_Action_HelperBroker::getStaticHelper('actionStack');
// la section de la page, et le controleur qui va l'utiliser 

//le controlleur index va rendre l'action footerAction dans la vue footer
$actionStack->actionToStack('footer','index');
//idem 
$actionStack->actionToStack('menu','menu');
//idem
$actionStack->actionToStack('header','index');

On envoie dans chaque section, le resultat du controlleur (spécifié en deuxieme parametre)

en l'occurence, dans mon cas, chaque page a une section header footer et menu, qui est générée par le controlleur de l'index avec les action footerAction...Etc...

a savoir que dans le fichier index.php j'ai aussi quelque chose qui me permet d'utiliser le layout :

Code:

$layout =Zend_Layout::startMvc($config->layout);

et un fichier  config.ini où il y a les parametres du layout :

Code:

layout.layout     = template
layout.contentKey = contenu
layout.layoutPath = "../application/layouts"

comme on peut le remarquer, j'ai un fichier template.phtml dans le dossier MARACINE/application/layouts

dans mon fichier template.phtm:

Code:

<div id="footer"><?php echo $this->layout()->footer ?>
</div>
<!--et pareil pour toutes les sections-->

et pour finir dans mon indexController :

Code:

   public function headerAction()
   {
      $this->_helper->viewRenderer->setResponseSegment('header');
   }
//pareil pour toutes les sections.

Voilà.
En espérant t'avoir aidé!

Dernière modification par gostbuster (15-04-2009 17:01:39)


Gostbuster - Développeur WEB

Hors ligne

 

#3 20-03-2009 08:06:48

kaboume
Membre
Lieu: Bagneux
Date d'inscription: 21-09-2007
Messages: 24
Site web

Re: Include dans un phtml ?

Hello,

Merci bcp pour avoir pris le temps de me répondre de manière précise.

Je vais creuser ta solution et l'implémenter.

A+.

Hors ligne

 

#4 20-03-2009 09:30:22

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: Include dans un phtml ?

avec plaisir


Gostbuster - Développeur WEB

Hors ligne

 

#5 15-04-2009 15:41:11

forevermoon
Membre
Date d'inscription: 10-04-2009
Messages: 45

Re: Include dans un phtml ?

Code:

<div id="footer"><?php echo $this->layout()->footer ?>
</div>

moi il ne m'affiche pas le footer ...
pourtant j'ai un "controllers/ footerController.php"
un "layouts/footer.phml"

Hors ligne

 

#6 15-04-2009 16:47:15

gostbuster
Membre
Date d'inscription: 11-03-2009
Messages: 160

Re: Include dans un phtml ?

Salut,

Je n'ai pas de footerController ........heu

En fait finalement j'ai changé de technique......Je vais maintenant te mentionner la technique a utiliser qui semble etre plus propre :

dans ton bootstrap :

Code:

$layout =Zend_Layout::startMvc($config->layout);
$view = new Zend_View();
$view->setEncoding('UTF-8');
$view->strictVars(true);
$view->doctype('XHTML1_TRANSITIONAL');

$view->addHelperPath('Zend/Dojo/View/Helper/', 'Zend_Dojo_View_Helper');
$viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view);
Zend_Controller_Action_HelperBroker::addHelper($viewRenderer);

Il te faut aussi un fichier de config. Dans ce fichier il y aura ceci :

Code:

layout.layout = "template"
layout.contentKey = "contenu"
layout.layoutPath = "../application/views/layouts"

ensuite, ton fichier template.phtml :

Code:

<?php 
echo $this->doctype();
//echo $this->doctype("XHTML1_TRANSITIONAL"),PHP_EOL; ?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<?php  echo $this->headMeta()
->setHttpEquiv('Content-type', 'text/html; charset=utf-8')

->setHttpEquiv('lang','fr')
->setHttpEquiv('imagetoolbar','no')
->setName('author','............')
->setName('generator','ZendFramework 1.6')
->setName('Language','fr');



?>


</head>
<body class="tundra">

<div id="header">
<?php echo $this->partial('common/header.phtml',array('pageTitle'=>/*$this->titre*/''));?>
</div>

<!-- ><div id="menu">
<?php// echo $this->layout()->menu ?>
</div>
-->
<!--contenu-->
<div id="contenu"><?php echo $this->layout()->contenu ?>
</div>

<!-- footer -->
<div id="footer"><?php echo $this->partial('common/footer.phtml'); ?>
</div></body></html>

Si j'ai rien oublié, ca devrait fonctionner. Voilà


Gostbuster - Développeur WEB

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages