IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MVC PHP Discussion :

Gestion de "blocs" (notion générale de templates)


Sujet :

MVC PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2008
    Messages : 12
    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.

  2. #2
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Regarde au niveau de partial dans la documentation

    http://framework.zend.com/manual/fr/...w.helpers.html

  3. #3
    Membre éprouvé Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    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)

  4. #4
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    Render et partial n ont pas du tout le même but.
    Un pour plusieurs vue l autre pour une seule

  5. #5
    Membre éprouvé Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    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)...
    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.

  6. #6
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    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.

  7. #7
    Membre éprouvé Avatar de Alcide_
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2008
    Messages : 79
    Par défaut
    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...
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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...

  8. #8
    Membre Expert
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Par défaut
    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.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo