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] Problème avec extends [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut [Twig] Problème avec extends
    Bonjour,

    Je suis face à un problème très embêtant. J'ai un fichier news.html.twig qui extends base.html.twig.

    J'aimerais définir des variables pour base.html.twig (par exemple un l'id du joueur courant). Hors les données que je passe à news.html.twig ne sont pas remontées vers base.html.twig, du coup je suis dans l'incapacité d'utiliser des variables dans base.html.twig.

    Comment puis-je faire?

    Merci d'avance,
    Cordialement, Max

    PS : merci d'éviter les réponses du style {% set ... %}, les variables doivent être dynamiques et provenir de php.

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Points : 234
    Points
    234
    Par défaut
    Que veux tu faire de ces variables ? Juste les afficher à un endroit précis ?

    Tu peux utiliser les block pour ça, un block joueur dans ton base.html.twig par exemple, et depuis news.html.twig tu ouvres le block et tu modifies ce que tu veux dedans.

    Sinon montres ton code qu'on comprenne ce que tu souhaites faire

  3. #3
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 318
    Points : 362
    Points
    362
    Par défaut
    Citation Envoyé par max13fr Voir le message
    PS : merci d'éviter les réponses du style {% set ... %}, les variables doivent être dynamiques et provenir de php.
    On a le droit à des réponses du style : {% block tavariable %} {% endblock %} ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Bonjour,

    J'aimerais par exemple savoir dans le block base si le joueur est connecté ou pas, si oui qu'elle est son id, etc...
    L'utilité serait par exemple d'afficher un lien connexion ou déconnexion en haut pour toutes les pages. Le problème d'extends c'est qu'il faudrait l'ajouter dans toutes les sous pages du coup on perd complètement l’intérêt de l'extends en lui même .

    En gros j'aimerais passer des variables provenant d'un contrôleur à un template twig générique à toutes les pages.

    Merci d'avance,
    Cordialement, Max

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par Guybrush113 Voir le message
    On a le droit à des réponses du style : {% block tavariable %} {% endblock %} ?
    Non ! C'est pas ce que je veux .

    Je blague Le prenez pas mal mon PS, c'est juste que je voulais éviter des réponses hors sujet

  6. #6
    Inscrit
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 319
    Points : 476
    Points
    476
    Par défaut
    Salut,

    Inspire toi de FOSUB pour le connexion/deconnexion : https://github.com/FriendsOfSymfony/...yout.html.twig

    Pour le reste, est-ce que le tag render peut t'aider ? Je pense

  7. #7
    Membre actif

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2008
    Messages : 186
    Points : 234
    Points
    234
    Par défaut
    Avec SF2 tu peux savoir si un utilisateur est identifié via Twig en faisant ce test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {% if is_granted('ROLE_USER') %
    Cela implique que le rôle existe bien sûr.

    Au final tu peux avoir dans ton template principale quelque chose comme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {% if is_granted('ROLE_USER') %}
                <a href="{{ path('logout') }}">Quitter</a>
                {% else %}
                <a href="{{ path('login') }}">Connexion</a>
                {% endif %}
    Peut importe l'id de l'utilisateur, lorsqu'il s'est identifié via ton formulaire, il est passé du statut de visiteur anonyme à celui de ROLE_USER.

    A toi d’implanter les routes, regardes les aides sur le site de SF2 ou ici dans les tutos

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Arf j'ai pris un mauvais exemple. J'aimerais par exemple afficher le nombre de connecter en haut de la page dans base.html.twig, il y a pas moyen?

    Une autre petite question : est-il possible de définir ses propres fonctions twig dans un controller par exemple? Ou à un autre endroit?

    Merci d'avance,
    Cordialement, Max

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    J'ai trouvé une partie de la solution : il faut utiliser les variables globales de twig. Pour cela il faut étendre twig comme expliqué ici : http://tcuvelier.developpez.com/tuto...eer-extension/

    Mais mon problème persiste car les variables définies ici ne proviennent pas du controleur . Quelqu'un aurait une solution?

    Merci d'avance,

    Max

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 146
    Points : 262
    Points
    262
    Par défaut
    Winzou t'as déjà donné la solution

    Il faut utiliser la fonction render de twig

    Ex :
    http://symfony.com/doc/2.0/book/temp...ng-controllers

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {# app/Resources/views/base.html.twig #}
    ...
     
    <div id="sidebar">
        {% render "AcmeArticleBundle:Article:recentArticles" with {'max': 3} %}
    </div>
    Qui te permet depuis un template twig d’appeler un contrôleur qui aura alors accès aux variables de sessions ou autres je ne sais quoi nécessaire.

    Il est normal que des var d'un template fils ne remonte pas au parent sinon cela obligerait tout les enfants d'un parent a fournir cette valeur ce qui n'as plus aucun intérêt

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 15
    Points : 10
    Points
    10
    Par défaut
    Ah classe je l'avais pas compris comme ça la fonction render dans twig. C'est un peu l'inverse de celle dans le contrôleur au faite.

    Merci pour vos réponses,

    Cordialement, Max

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

Discussions similaires

  1. problème avec <extend> & <include>
    Par kmb46 dans le forum Cas d'utilisation
    Réponses: 4
    Dernier message: 28/05/2015, 11h43
  2. [2.x] Probléme avec un opérateur de comparasion dans Twig
    Par bilbi dans le forum Symfony
    Réponses: 5
    Dernier message: 22/06/2012, 11h08
  3. Problème avec Extended Kalman Filter (EKF)
    Par kronanberg dans le forum Signal
    Réponses: 4
    Dernier message: 26/07/2011, 09h12
  4. [POO] Problème avec extends + implements ?
    Par Alp dans le forum Langage
    Réponses: 1
    Dernier message: 04/07/2008, 20h42

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