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 28/07/2011, 12h10   #1
Invité régulier
 
Homme Mathieu
Développeur Web
Inscription : mars 2008
Messages : 12
Détails du profil
Informations personnelles :
Nom : Homme Mathieu
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : mars 2008
Messages : 12
Points : 6
Points : 6
Par défaut Gestion de "blocs" (notion générale de templates)

Bonjour à tous,

Je débute en Zend et je poste ici car je ne trouve que des exemples trop pointus ou des exemples qui ne correspondent pas à mon besoin.

Savez-vous comment on peut afficher différents blocs (issus à priori de différentes vues) dans une même page ?
Je cherche à convertir une application qui utilise un système de templates ancien et rudimentaire. Donc l'idée est comment faire du ré-use de portions de code dans différentes présentations de pages. Typiquement une fiche produit, un bloc d'actualité, un bloc d'infos dans une même page avec éventuellement des conditions sur ces différents blocs.

Je ne trouve que des exemples de pages "simple" avec un simple formulaire typiquement inclus dans un layout global.

Merci d'avance pour votre aide.
cow_boy17 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/07/2011, 12h25   #2
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Regarde au niveau de partial dans la documentation

http://framework.zend.com/manual/fr/...w.helpers.html
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 16h41   #3
Membre régulier
 
Avatar de Alcide_
 
Homme
Étudiant
Inscription : juin 2008
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 70
Points : 78
Points : 78
Utilise l'aide de vue "partial()" avec parcimonie, si c'est pour des rendus simples, je te conseille plutôt d'utiliser directement la méthode "render()", moins gourmande en ressource.
performance de rendu (doc)
Alcide_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/08/2011, 17h22   #4
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Render et partial n ont pas du tout le même but.
Un pour plusieurs vue l autre pour une seule
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 11h49   #5
Membre régulier
 
Avatar de Alcide_
 
Homme
Étudiant
Inscription : juin 2008
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 70
Points : 78
Points : 78
Citation:
Envoyé par 5h4rk Voir le message
Render et partial n ont pas du tout le même but.
Un pour plusieurs vue l autre pour une seule
Peux-tu être plus clair dans tes posts ?
Il serait dommage que tu induises en erreur les personnes qui ont besoins de réponses...

Si tu dis :
1) que la méthode "render()" de Zend_View ne peux réaliser qu'un seul rendu par exécution.
2) que l'aide de vue "partial" (quand à elle) peut être utilisée plusieurs fois dans tes scripts.
3) que c'est à ce niveau que leur utilisation est différente.

Alors, je te conseille de te renseigner un peux plus en profondeur (surtout avant de contredire quelqu'un...).
- Le but de la méthode "render()" est de faire un rendu,(elle est d’ailleurs proxiée par Zend_Controlleur_Action).
- Le but de l'aide de vue "partial" est de faire un rendu partiel au niveau d'une vue.
Elles sont toutes les deux utilisables dans les scripts de vue et toutes les deux utilisables plusieurs fois dans les scripts.

L'une des réelles différences réside dans la portée des variables utilisées dans la vue partielle.
Car "partial" va cloner l'objet Zend_View (très gourmand) afin de fournir une portée de variables limitée au script partiel alors que la méthode "render()" utilise l'objet Zend_View initial.

Pour faire plus simple je vais citer la doc (le lien de mon dernier post)...
Citation:
The power and use of partial() come from the second and third arguments. (...) the $model argument allows you to explicitly pass variables for use with the partial view. If you're not passing either argument, use render() instead!

Basically, unless you are actually passing variables to the partial and need the clean variable scope, or rendering a view script from another MVC module, there is no reason to incur the overhead of partial(); instead, use Zend_View's built-in render() method to render the view script.
Donc là où je suis d'accord avec toi c'est que "partial" et "render" ne doivent pas être confondues, bien qu'elles aient la même finalité, elles ne sont pas à utiliser dans les mêmes conditions ni pour répondre aux mêmes problématiques.
Bilan: privilégier "render" quand cela est possible.
Alcide_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 13h17   #6
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
Tu réponds toi même à ce que je dis à propos de render() et partial().

Dans un cas l'utilisation comme tu le dis qui est fait également par les actions est le rendu, il s'agit du rendu complet d'un page, tu ne peux pas en mettre plusieurs par exemple dans une action.

Tandis que partial() est utilisé pour inclure plusieurs vue (partie de vue en faite si on veut être précis)

Donc en fonction de ce qui est demandé ici il s'agit bien de partial étant donné qu'il veut inclure plusieurs partie.
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 15h23   #7
Membre régulier
 
Avatar de Alcide_
 
Homme
Étudiant
Inscription : juin 2008
Messages : 70
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 23
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 70
Points : 78
Points : 78
Bon on va pas en faire un débat non plus...
Ce que tu dis n'est pas exacte et en plus tu déformes mes propos...
Citation:
Elles sont toutes les deux utilisables dans les scripts de vue et toutes les deux utilisables plusieurs fois dans les scripts.
C'est pas comme si les mots importants était en gras, mais bon...
Sinon en pratique :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
/*ma-vue.phtml*/
 
/*c'est possible de faire :*/
<?php echo $this->render('mon-script1.phtml');?>
<?php echo $this->render('mon-script2.phtml');?>
<?php echo $this->render('mon-script3.phtml');?>
 
/*et c'est plus coûteux en ressource de faire :*/
<?php echo $this->partial('mon-script1.phtml');?>
<?php echo $this->partial('mon-script2.phtml');?>
<?php echo $this->partial('mon-script3.phtml');?>
J'arrête là...
Si quelqu'un veut en débattre encore (pour contredire la doc, le code, le guide des perf', ou accessoirement moi ) je reste à votre disposition en MP...
Alcide_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2011, 18h10   #8
Modérateur
 
Homme Loïc
Développeur Web
Inscription : février 2011
Messages : 678
Détails du profil
Informations personnelles :
Nom : Homme Loïc
Âge : 26
Localisation : France, Hérault (Languedoc Roussillon)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2011
Messages : 678
Points : 1 041
Points : 1 041
La documentation anglaise est claire sur ce point on peutl'utiliser mais ça n'en ai pas le but, pour plusieurs parties il est recommendé d'utilisait partial();

D'ailleurs render() n'est pas que pour la vue et est bien plus complexe.
(Décorateurs, fil d'arianne, action, etc) et aucune fois tu le verras appelé plusieurs fois.
5h4rk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h53.


 
 
 
 
Partenaires

Hébergement Web