Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-11-2008 12:46:45

farf
Membre
Date d'inscription: 21-11-2008
Messages: 37

[Résolu][Zend_view][1.6] content affiché deux fois

Bonjour,

Si j'éxécute deux actions avec l'ActionStack, le content de ma vue s'affiche deux fois à la suite!

Je ne comprends pas comment le framework créer le "content" de la vue qui s'affiche.
Il va chercher automatiquement le .phtml qui correspond à l'action d'après ce que je comprends mais pourquoi irait-il chercher deux fois ce phtml.
A priori, le rendu est réalisé à la fin après que toutes les actions aient été éxécuté. Si une action a été éxécutée deux fois, elle devrait "écraser" le contenu de content et non pas en rajouter.

Avez-vous de la doc qui montre comment Zend créé la vue à partir de ce que rend l'action?

Help!


Farf

Dernière modification par farf (26-11-2008 10:01:06)

Hors ligne

 

#2 24-11-2008 16:47:10

farf
Membre
Date d'inscription: 21-11-2008
Messages: 37

Re: [Résolu][Zend_view][1.6] content affiché deux fois

Je me permets de faire un petit up.

Est-ce que quelqu'un pourrait m'expliquer comment est créer $view->content ou juste me donner un lien répondant à cela? (je n'ai pas trouvé...)

Merci d'avance

Farf

Hors ligne

 

#3 25-11-2008 09:26:26

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu][Zend_view][1.6] content affiché deux fois

Ce n'est pas évident dire "le problème vient de la"
A priori, tu passes 2 fois dans une action car la première a été marqué comme non dispatché (enfin je crois)

Vérifier bien ton 'cheminement', si tu as des forward, vérifie qu'il ne sont pas appelé quand il ne faut pas.

Mets du debugs pour trouver dans quelles conditions du repasse dans la même action.


----
Gruiiik !

Hors ligne

 

#4 25-11-2008 10:23:52

farf
Membre
Date d'inscription: 21-11-2008
Messages: 37

Re: [Résolu][Zend_view][1.6] content affiché deux fois

Bonjour,

Merci pour votre réponse.

Je me suis mal exprimé. Je sais pourquoi je passe deux fois par l'action. Mais je ne comprends pas pourquoi le $view->content affiche deux fois le contenu. Pour moi, le deuxième passage dans l'action écrase le "content" créé par la première action...

Je me demande donc comment est créé le $view->content.

Je ne sais pas si je suis clair?

Merci d'avance pour vos explications.

Yvan

Hors ligne

 

#5 25-11-2008 12:21:10

gchau
Membre
Date d'inscription: 15-05-2008
Messages: 17

Re: [Résolu][Zend_view][1.6] content affiché deux fois

1)A mon avis si tu sais pourquoi tu passes 2 fois par ton action ce serait bon de le dire si tu veux qu’on puisse t’aider.
2)Voir (autrement dit avoir un bout de code)  comment tu  appelles le helper actionstack  cad d’où  (controller, bootstrap..)  et avec quels  paramètres pourrait  également être utile ainsi que voir la façon dont tu crées ton segment content  ( au fait utilises tu le composant zend_layout qui crée justement un segment de nom content)
A+

Hors ligne

 

#6 25-11-2008 12:56:11

mikaelkael
Administrateur
Lieu: Donges
Date d'inscription: 18-06-2007
Messages: 1176
Site web

Re: [Résolu][Zend_view][1.6] content affiché deux fois

Hello,

Méthode renderScript du helper ViewRenderer :
$this->getResponse()->appendBody(...)

C'est donc normal d'avoir 2 fois l'affichage, si tu utilise le ViewRenderer.

Tu mets un response->clearBody() pour vider ton premier affichage.

A+


Less code = less bugs
Contributeur ZF - ZCE - ZFCE - Doc ZF (CHM & PDF) - Vice-trésorier AFUP 2011
Ubuntu 11.04 - ZendServer

Hors ligne

 

#7 26-11-2008 10:00:44

farf
Membre
Date d'inscription: 21-11-2008
Messages: 37

Re: [Résolu][Zend_view][1.6] content affiché deux fois

Merci mikaelkael, la fonction appendBody répond à ma question, il y a en effet un .=

$this->_body[$name] .= (string) $content;

gchau,
1/ J'ai une action appelée directement par le router qui me redirige vers l'action login par l'acl puis j'ai une deuxième action lancée par l'action stack qui m'affiche le menu. Cette action est aussi redirigée vers l'action login. C'est une partie admin, je n'ai pas envie que quelqu'un non loggé aie accès au menu.
-> deux fois l'action login -> deux formulaire de login à la suite à cause du appendbody sauf si je rajoute un clearbody qui résoud le problème. smile

2/ oui, j'utilise Zend_layout.

Problème résolu et compris.

Farf

Dernière modification par farf (26-11-2008 10:56:04)

Hors ligne

 

#8 26-11-2008 10:19:19

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu][Zend_view][1.6] content affiché deux fois

Perso, au lieu d'utiliser clearBody, je configure mon action stack pour qu'il n'est pas à faire une action qui ne sert à rien :

Code:

if (Zend_Auth::getInstance()->hasIdentity())
{
  // rajoute le menu dans l'action stack..
}

Chacun son style smile


----
Gruiiik !

Hors ligne

 

#9 26-11-2008 11:05:31

farf
Membre
Date d'inscription: 21-11-2008
Messages: 37

Re: [Résolu][Zend_view][1.6] content affiché deux fois

hum oui, cela marche (et c'est beaucoup plus malin) si c'est juste vérifier si la personne est authentifié. Mais je souhaite que la personne aie  un rôle particulier. Si je met un IF (role == "admin") , cela met des règles d'authentification dans l'actionStack qui n'a pas à les connaître.

Je réfléchis à un moyen plus propre de faire, en avez-vous un? Idéalement, il faudrait que l'action soit lancé seulement si la personne a les droits sans mettre les droits dans l'actionStack... L'actionStack n'est pê alors pas la bonne solution.


Merci pour l'échange de vos bonnes pratiques!

Farf

Hors ligne

 

#10 26-11-2008 11:45:02

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: [Résolu][Zend_view][1.6] content affiché deux fois

Sans mettre les droits dans l'actionStack ??? Je comprends pas ce que tu veux dire.
Les droits, on en a besoin partout, que ca soit pour autoriser à allé sur un page, afficher un lien, etc...
Moi, mes droits sont dans un registre.

Voila comment je procède
- plugin 'Auth' : il gère l'identification, si la personne n'est pas identifié -> redirection, si oui -> elle initilialise les droits et stocke dans le registre (et tout ce qui est relatif à "l'identity")
- plugin 'actionSetup' : il paramètre l'action stack -> si la personne n'a pas identifié, pas de menu, si oui -> menu dans la stack

Mon controller de menu, lui, il sait comment il doit générer sont menu en fonction des droits (récupérer dans le registre), mais rien ne t'empêche au moment ou tu paramètres ton actionStack de tester les droits et de décider ou non d'exécuter l'action menu

Perso, mon actionStack ne va pas plus loin, car, la pluspart du temps, suffit de copier mon plugin dans un autre projet sans avoir à y touché (les droits ne sont pas forcément pareil d'une appli à l'autre)

Je vais demandé de rebaptiser le ZF en ZFL (pour Zend Framework Liberty !)

Dernière modification par nORKy (26-11-2008 11:46:27)


----
Gruiiik !

Hors ligne

 

#11 26-11-2008 14:00:25

farf
Membre
Date d'inscription: 21-11-2008
Messages: 37

Re: [Résolu][Zend_view][1.6] content affiché deux fois

Merci, ca se tient complètement. La gestion du menu par rapport au droit se situe dans le controller de menu. Normal! (une fois que l'on voit le truc, cela paraît évident!)

Farf

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