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 :

Récupérer le contenu d'un block d'une vue Twig


Sujet :

Symfony PHP

  1. #1
    Membre éclairé Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Points : 801
    Points
    801
    Par défaut Récupérer le contenu d'un block d'une vue Twig
    Bonjour,

    Tout d'abord je tiens à préciser que je suis débutant dans le développement web, et du coup, encore plus sur Symfony2

    Je suis en train de me faire un portfolio qui contient plusieurs sections les unes en dessous des autres (à propos, compétences, expériences professionnelles, etc.), ainsi qu'une barre de navigation contenant les liens (anchor) vers ces sections.

    Pour l'instant j'en suis la:

    index.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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    {% extends "::base.html.twig" %}
     
     
    {% block title %}
        PortFolio
    {% endblock %}
     
     
    {% block nav %}
        {% if sections is defined %}
            <ul class="nav masthead-nav">
                {% for section in sections %}
                    <li>
                        <a href="#section_anchor">section_menuitem</a>                           <!-- C est ici que je bloque! -->
                    </li>
                {% endfor %}
            </ul>
        {% endif %}
    {% endblock %}
     
     
    {% block body %}
        {% if sections is defined %}
            {% for section in sections %}
                {% include section %}
            {% endfor %}
        {% else %}
            <h4>Aucun contenu pour le moment.</h4>
        {% endif %}
    {% endblock %}
    section.html.twig:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <a name="{% block section_anchor %}{% endblock %}">
        <h2>{% block section_title %}{% endblock %}</h2>
    </a>
    {% block section_content %}{% endblock %}
    apropos.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
    16
    17
    18
    19
    20
    21
     
    {% extends "WebSitePortFolioBundle:Default:section.html.twig" %}
     
    {% block section_menuitem %}
        A Propos
    {% endblock %}
     
     
    {% block section_anchor %}
        a_propos
    {% endblock %}
     
     
    {% block section_title %}
        A Propos de Moi
    {% endblock %}
     
     
    {% block section_content %}
        Du contenu..
    {% endblock %}
    competences.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
    16
    17
    18
    19
    20
    21
    22
     
    {% extends "WebSitePortFolioBundle:Default:section.html.twig" %}
     
     
    {% block section_menuitem %}
        Compétences
    {% endblock %}
     
     
    {% block section_anchor %}
        competences
    {% endblock %}
     
     
    {% block section_title %}
        Mes Compétences
    {% endblock %}
     
     
    {% block section_content %}
        Du contenu..
    {% endblock %}
    et l'action de mon controller pour rendre la page:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public function indexAction() {
            return $this->render('WebSitePortFolioBundle:Default:index.html.twig', array(
                        "sections" => array(
                            "WebSitePortFolioBundle:Sections:apropos.html.twig",
                            "WebSitePortFolioBundle:Sections:competences.html.twig"
                        ))
            );
        }
    Comme vous pouvez le voir, j'envoie en paramètre, depuis mon controller vers mon template index.html.twig, une liste de template à include. Dans chacun de ces templates, j'ai des blocks récurrents dont j'aimerais récupérer le contenu (section_menuitem, section_anchor) afin de m'en servir pour générer ma barre de navigation (toujours dans mon template index.html.twig). Mais je ne sais pas comment faire!

    Merci de votre aide.

    PS: J'aurais pu être plus concis dans la description de mon problème mais j'aimerais avoir, si possible, des retours sur la manière dont je m'y suis pris..
    J’ai des questions à toutes vos réponses!

  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
    yooo man rastafariiiiiiiiiiiiiiiiiiiiiiiiiiiii


    j'ai lu ton truc mais j'ai rien pigé man, yééeaaah

    mais si cela peut t'aider :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% block xxxxxxxx %}
      {{ parent }}   // récupérer le contenu du block xxxxxxxx parent
     
       // tu peux ajouter ici du code
    {% endblock %}

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    68
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 68
    Points : 42
    Points
    42
    Par défaut
    En twig tu peux comme le dit dukoid utiliser la fonction parent.

    Imaginons que tu es un fichier apropos.html.twig avec dedans quelques chose du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {% block apropos %}
     
    <h2>A propos de moi !</h2>
     
    {% endblock %}
    dans index.html.twig tu vas faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {% extends ::apropos.html.twig %} // Tu appels le fichier qui contient le block apropos
     
    {% block apropos %} // Tu utilise le block apropos 
    parent() // Tu affiche ce qu'il y a déjà dedans
     
    <p>Mon bla bla</p> // Tu ajoute ce que tu veux après. (ou avant :p)
    {% endblock %} // Et bien sur tu ferme ton block.

    Ou sinon dans ton index.html.twig tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {% include '::apropos.html.twig' %}

Discussions similaires

  1. Comment récupérer le contenu d'un item dans une JList ?
    Par julie_lab dans le forum Composants
    Réponses: 3
    Dernier message: 01/11/2010, 12h25
  2. récupérer le contenu de listbox associe a une groupbox
    Par MrRebel dans le forum VC++ .NET
    Réponses: 0
    Dernier message: 20/07/2009, 16h14
  3. Récupérer le contenu de la requête dans une variable
    Par cgonzalez dans le forum Langage
    Réponses: 1
    Dernier message: 06/10/2007, 11h44
  4. Récupérer le contenue d'un div d'une page HTML
    Par avogadro dans le forum Windows Forms
    Réponses: 1
    Dernier message: 10/09/2007, 09h25
  5. Récupérer le contenu d'un input d'une Popup
    Par Lung dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 30/06/2006, 17h09

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