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

Symfony PHP Discussion :

Twig héritage des templates, un menu qui diffère suivant le bundle [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut Twig héritage des templates, un menu qui diffère suivant le bundle
    Hello

    Je n'arrive pas à trouver comment je doit faire pour avoir mon menu top qui change suivant le bundle où on se trouve

    J'ai donc un template de base dans src/AppBundle/Resources/views/base.html.twig
    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
     
    <html>
    <head></head>
    <body>
        <div id="wrap">
            {% block menu_top %}
                {% include 'AppBundle::menu.html.twig' %}
            {% endblock %}
            <div class="container">
                {% block body %}
                {% endblock %}
    </div>
    </div>
    </body>
    </html>
    J'ai src/AppBundle/Resources/views/menu.html.twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ul><li>Action1</li></ul>
    Je voudrai surcharger ce menu dans un autre Bundle (AppIndicateurBundle)

    Qui par exemple à comme page : src/App/IndicateurBundle/Resources/views/Courrier/index.html.twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% extends 'AppBundle::base.html.twig' %}
     
    {% block body %}
     
    {% endblock %}
    J'ai créé un menu dans src/App/IndicateurBundle/Ressources/AppBundle/views/menu.html.twig
    J'ai vidé le cache, ext...

    Où me suis je trompé ?

    Merci

  2. #2
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    je ferai de la sorte :

    app-> base.html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div .....
    {% block menu %}        // le placer au top...    // vide
    {% endblock %}
    </div>

    premierBundle-> layout.html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% extends "AppBundle::base.html.twig" %}
     
    {% block menu %}
     {% include 'premierBundle::menu_1.html.twig' %}  // un menu spécifique au premierBundle
    {% endblock %}
    * toutes les vues de premierBundle étends son propre layout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% extends "AcmePremierBundle::layout.html.twig" %}
     
    ...


    deuxiemeBundle-> layout.html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% extends "AppBundle::base.html.twig" %}
     
    {% block menu %}
     {% include 'deuxiemeBundle::menu_2.html.twig' %}           // un menu spécifique au deuxiemeBundle
    {% endblock %}
    * toutes les vues de deuxiemeBundle étends son propre layout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% extends "AcmePremierBundle::layout.html.twig" %}
     
    ...

    on a donc cette hiérarchie :
    ..............................[app]
    ..............................base(emplacement de n'importe quel menu)
    [premierBundle]...................................[DeuxiemeBundle]
    layout1(menu_1)...................................layout2(menu_2)
    vue1 vue2.............................................vue1 vue2 vue3 vue4

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    le layout.html.twig je le mets à la racine du bundle/Ressources j'imagine

    le fait qu'il s'appel layout.html.twig sf va aller chercher ce template ?

  4. #4
    Membre expert
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Points : 3 004
    Points
    3 004
    Par défaut
    pour qu'il soit utilisé faut lui indiquer comme ici par exemple :

    mavue1.html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    {% extends "AcmePremierBundle::layout.html.twig" %}
     
    ...
    pour un premierBundle :
    resources/views/vueA
    resources/views/vueA/mapage1.html.twig
    resources/views/vueA/mapage2.html.twig
    resources/views/vueB
    resources/views/vueB/...
    resources/views/vueC
    resources/views/vueC/...
    resources/views/layout.html.twig


    toutes les pages des dossiers vueX(mapage....) vont étendre de layout.html.twig qui lui même va étendre de app/base.html.twig



    va falloir que tu potasses un peu la doc de Symfony pour comprendre les mécanismes des vues, d’héritages, des blocks .....

  5. #5
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2003
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Super !

    Pile ce qu'il fallait

    Merci :-)

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

Discussions similaires

  1. [2.x] [Twig] Héritage de template
    Par lange59 dans le forum Symfony
    Réponses: 12
    Dernier message: 01/08/2011, 21h32
  2. Résultat d'une vue qui diffère suivant ordre de tri
    Par jjjjjggggg dans le forum PL/SQL
    Réponses: 5
    Dernier message: 13/01/2011, 16h56
  3. Menu qui fait des misères
    Par kaiser59 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 08/12/2006, 20h06
  4. Menu qui s'affiche en permanance en haut a gauche des images
    Par raphio000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 19
    Dernier message: 25/07/2006, 11h14
  5. faire un petit menu qui lance des processus
    Par tomsoyer dans le forum Linux
    Réponses: 4
    Dernier message: 30/11/2004, 18h37

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