Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Framework > MVC
MVC Forum de support sur le développement d'applications de type modèle-vue-contrôleur avec Zend Framework ainsi que vos questions sur les plugins, les helpers etc. Avant de poster -> Cours MVC, FAQ ZF Controller
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/07/2008, 12h06   #1
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 319
Points : 3 319
Par défaut Header et footer.phtml

Bonjour à tous ,
je me met tout juste au zend Framework et je rencontre déjà un souçis

J'ai créer un controller de base (IndexController) ainsi que la vue qui lui est associé dans views/scripts/index/index.phtml .

Je souhaites cependant scinder mes fichiers vues en plusieurs fichiers (header et footer)

J'ai donc été faire un tour dans la FAQ et opté pour la première solution qui consiste à ajouter dans chaque fichier de vue :

Code :
<?php $this->render('header.phtml')?>
J'ai donc un index.phtml qui ressemble a ceci :

Code :
1
2
3
4
5
6
 
<?php $this->render('header.phtml')?>
<body>
<?php echo $this->msgTest; ?>
</body>
<?php $this->render('footer.phtml')?>
Mon controlleur ne contient pour le moment que :
Code :
1
2
3
4
5
public function indexAction()
{
    $this->view->title = "titre"
    $this->view->msgTest = "Hello"
}
Quand j'affiche ma page j'ai bien "hello" qui s'affiche mais je n'ai pas le contenu du header.phtml ni du footer !
Quelqu'un voit l'erreur que je fait ?
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 12h18   #2
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bonjour,

Est-ce que tu as un message d'erreur (si tu as activé dans le bootstrap l'affichage des exceptions par le contrôleur frontal) ?
Un première piste, c'est l'emplacement de tes fichiers header et footer. Est-ce que tu les as mis directement dans le répertoire application/views/scripts ?
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 13h36   #3
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 319
Points : 3 319
Merci de ta réponse ,
Mes fichier header et footer sont bien dans views/scripts , donc de ce coté pas de problème.

Au niveau du bootstrap pour les erreur j'ai fait ceci :

Code :
1
2
error_reporting(E_ALL);
ini_set('display_errors','on');
Faut il faire quelque chose en plus pour les faire afficher par le front controller ?
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 13h41   #4
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Oui :
Code :
$frontController->throwExceptions(true);
Bien sûr, si $frontController est ton contrôleur frontal.
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 13h45   #5
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 319
Points : 3 319
Oki , je l'avais déjà mis également (tiré d'un tuto du site)
Mais pas d'erreur affichée
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 14h01   #6
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Bizarre... qu'est-ce qu'il y a dans tes fichiers header et footer, et qu'est-ce qui te fait dire qu'ils ne sont pas inclus ?
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 14h20   #7
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 319
Points : 3 319
Pour le moment header contient simplement un doctype et les balise d'entête html (<html><head><title>)
Et le footer ferme la balise html.

Et quand j'affiche ma page et que je consulte la source je n'ai que le contenu de la vue index.html.

Je me suis diriger vers les layouts (http://g-rossolini.developpez.com/tu...uter/?page=vue)
Est il possible de faire diffiérents layouts et le les appeler selon la vue concernée ?

Par exemple ma page index.phtml utilise le layout header1.phtml et ma page xxx.phtml utilise le layout header2.phtml ?

Merci

----Edit ---

Bon allez j'ai un peu honte de moi ^^
Je viens de trouver pourquoi ca ne marchais pas.
Il fallait faire un

Code :
echo $this->render(xxxx.phtml)
Et moi gros boulet que je suis j'avais pas mis le echo ...
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 14h29   #8
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
Oui, il est possible de modifier le layout en fonction de l'action exécutée. Tu devrais trouver toutes les infos nécessaires dans la doc du framework :
http://framework.zend.com/manual/fr/...quickstart.mvc

Par exemple, pour changer la vue à partir d'une action :
Citation:
Envoyé par Zend Framework Documentation
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
<?php
class FooController extends Zend_Controller_Action
{
    public function barAction()
    {
        // désactive les layouts pour cette action
        $this->_helper->layout->disableLayout();
    }
 
    public function bazAction()
    {
        // utilise un script de layout différent pour
        // cette action
        $this->_helper->layout->setLayout('foobaz');
    };
}
?>
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/07/2008, 18h05   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 1 249
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : janvier 2005
Messages : 1 249
Points : 1 417
Points : 1 417
Citation:
Envoyé par grunk Voir le message
Bon allez j'ai un peu honte de moi ^^
Je viens de trouver pourquoi ca ne marchais pas.
Il fallait faire un

Code :
echo $this->render(xxxx.phtml)
Et moi gros boulet que je suis j'avais pas mis le echo ...
Là, j'avoue, bien joué
Vivement les vacances !

Et pour être contructif, les layouts sont en effet faits pour toi. La factorisation du code est 100 fois meilleure.
vg33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h57.


 
 
 
 
Partenaires

Hébergement Web