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 :

Utilisation des "layouts" [ZF 1.7]


Sujet :

MVC PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut Utilisation des "layouts"
    Bonjour,

    Tout d'abord je dirais : "Oui j'ai déjà lu la doc"
    Puis : "Oui j'ai déjà recherché pour mon problème"

    Voilà :

    J'ai installé Zend, avec le Quick Start du site officiel.
    Etant débutant en ce qui concerne le MVC, j'ai du mal à comprendre comment fonctionnent les layouts, de plus Zend évolue assez vite visiblement donc trouver un tutoriel toujours d'actualité est difficile.

    Je ne comprends pas comment gérer différents layouts pour un site.
    Dans la doc officielle ils partent dans tous les sens, commence par du code qui dis "récupère la clé "lacle" ..." alors qu'on a rien défini du tout, ils parlent de 15.000 trucs à la fois....
    Je PANIQUE à voir tout ça.

    Ca fait des années que je fais du séquentiel, et passer à Zend est un gros effort pour moi, j'ai besoin de cas concrets pour comprendre, la doc' c'est bien quand on a comprit l'essence...

    Merci de me porter un coup de pouce, et merci de votre indulgence envers ce post désespéré.

  2. #2
    Membre Expert
    Avatar de Alexandre T
    Homme Profil pro
    Chef de projets AMO
    Inscrit en
    Mai 2002
    Messages
    1 213
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projets AMO
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 213
    Par défaut
    Bonjour et bienvenue,

    Alors avant toute chose, je voulais savoir si tu avais lu ce tutoriel sur les layouts :

    http://julien-pauli.developpez.com/t...d-layout/#LI-A

    Enfin, si tu "débarques" du monde séquentiel, avant de partir dans les Layouts, je te conseille de te renseigner et de comprendre dans un premier temps le modèle MVC. Ta démarche est la bonne de d'orienter vers ce type de programmation, mais j'imagine aisément que l'effort n'est pas si aisé Suit le tutoriel MVC que voici, il est très bien fait :

    http://g-rossolini.developpez.com/tu...ework/debuter/

    Il a l'avantage de présenter tout cela sans compliquer les choses et sans utiliser de layout, mais en utilisant de simple vue (avec Zend_View) Quand tu auras assimilé cela, il te sera plus aisé de comprendre les Zend_Layout.

    Bonne formation Et n'hésite pas à revenir pour les points que tu ne comprendrais pas.
    Alexandre Tranchant
    Chef de projet AMO pour le Cerema.
    Retrouvez mes articles sur PHP et Symfony

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut
    Slt,

    Merci de ta réponse.

    Pour la deuxième lien, j'avais déjà lu ce tutoriel. J'ai lu avec attention le premier lien que tu m'a donné,et j'ai trouvé un autre document, que j'ai lu dans son intégralité. J'ai tout compris, sauf les layouts :/

    Voici comment se déroulé mon pseudo layout séquentiel :

    Une page index appel :

    • include/header.php,
    • include/sidebar.php
    • $_GET['view'].php
    • include/footer.php


    Cependant, en mettant à neuf mon site avec Zend, je voudrais intégrer la possibilité de gérer plusieurs design, et plusieurs layouts par design : un pour le site et un pour le forum. Voici comment j'imagine ma structure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    application/design1/layouts/layout.phtml
    application/design1/layouts/site/[header.php,sidebar.php,footer.php]
    application/design1/layouts/forum/[header.php,sidebar.php,footer.php]
    application/design1/layouts/[mes_feuilles_de_style]
    
    application/design2/layouts/layout.phtml
    application/design2/layouts/site/[header.php,sidebar.php,footer.php]
    application/design2/layouts/forum/[header.php,sidebar.php,footer.php]
    application/design2/layouts/[mes_feuilles_de_style]
    Il s'agirait donc de definir le path du layout, mais comment le faire ? dans le boostrap.php ?
    Je comprends pas trop dans quel ordre sont appelé les fichiers avec Zend.

    Si je consulte la page ~/public/index.php , quelles sont les pages qui sont appelées et dans quel ordre ? Mon hypothèse :

    bootstrap.php (qui définit le comportement de l'api, et le path des layouts ?)
    IndexController (avec les actions que j'ai écris)
    et automatiquement : method => indexAction
    indexAction (qui fait son script, puis appel la vue en lui transmettant toute ses variables)
    index.phtml (la vue qui va exploiter les variables et les intégrer au html pour obtenir le rendu pour le client)

    enfin le dispatcher qui va créer notre page utlisant layouts.phtml, placant les éléments au bon endroit, car layout.phtml appel header.php, sidebar.php, NOTRE_VUE, footer.php

    J'ai décris tout ça comme je l'imagine, je conçois que c'est sûrement faux, et c'est là que j'implore votre aide

    De plus, je ne sais pas écrire l'api que je viens de vous décrire, même si le raisonnement tenu est bon. Une petite intro au code serait maintenant la bienvenue

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Citation Envoyé par Feng-Huang Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    application/design1/layouts/layout.phtml
    application/design1/layouts/site/[header.php,sidebar.php,footer.php]
    application/design1/layouts/forum/[header.php,sidebar.php,footer.php]
    application/design1/layouts/[mes_feuilles_de_style]
    
    application/design2/layouts/layout.phtml
    application/design2/layouts/site/[header.php,sidebar.php,footer.php]
    application/design2/layouts/forum/[header.php,sidebar.php,footer.php]
    application/design2/layouts/[mes_feuilles_de_style]
    Il s'agirait donc de definir le path du layout, mais comment le faire ? dans le boostrap.php ?
    Attention dans l'architecture que tu montres, tu as deux modules
    design1 et design2, c'est à dire deux sites complètement indépendant l'un de l'autre.

    Citation Envoyé par Feng-Huang Voir le message

    Il s'agirait donc de definir le path du layout, mais comment le faire ? dans le boostrap.php ?
    je pense que c'est une piste, dans le bootstrap tu pourrais faire avec une session, mais attention je suis null dans cette matière, mais j'imagine comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    $session = new Zend_Session_Namespace('default');
    //on est pas dans le forum
    if (! isset($session->forum))
    {
      Zend_Layout::startMvc(array('layoutPath' => '../application/layouts/site'));
    }else{
    Zend_Layout::startMvc(array('layoutPath' => '../application/layouts/forum'));
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 215
    Par défaut
    Humm ok.

    Pour l'architecture, effectivement d'après ce que j'ai lu, tous les layouts doivent être mis en vrac, mais via le système que tu propose, je pourrais séparer les éléments. Car si je mets tout en vrac ça va être le bordel...


    N'empêche que j'ai toujours pas compris comment les layouts fonctionnent, pour l'affichage proprement dit... j'ai relu plusieurs fois plusieurs documents mais je pige que dale :/

    Si la doc des différents éléments est bien faite et très complète, on ne trouve rien concernant le fonctionnement à proprement dit de Zend.

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Ton layout.phtml reprend l'ensemble de ta charte graphique, et puis tu lui passe le contenu te tes controller(explication simple hein).

    Voici le mien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <?php
    /**
     * Layout de l'application
     *
     *
     * @copyright  2008 Formatux Technologies
     * @author     info@formatux.be  Ernaelsten Gerard
     * @license    http://www.formatux.be/contact   Merci de prendre contact avec l'auteur
     * @version    Release: 0.3
     * @link       http://www.formatux.be
     * @since      Class available since Release 1.7.0
     * @deprecated Class deprecated in Release 2.0.0
     * @category   Pontaury
     * @package    Layout
     */
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <!--  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />-->
    <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
    <title><?php echo TITLE ?></title>
     
    <!-- Scripts Jquery -->
    <script type="text/javascript" src="<?php echo $this->baseUrl()?>/html/scripts/jquery.js"></script>
     
     
     
    <link rel="stylesheet" href="<?php echo $this->baseUrl()?>/html/styles/reset.css" type="text/css" />
    <link href="<?php echo $this->baseUrl()?>/html/styles/style.css" rel="stylesheet" type="text/css" />
    <link href="<?php echo $this->baseUrl()?>/html/styles/form.css" rel="stylesheet" type="text/css" />
     
     
     
    </head>
     
    <body>
     
    <div>
          	<?php echo $this->layout()->content;?>
     
          </div>
     
     
     
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

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