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 :

La Surcharge de templates de Bundle


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    qsrf
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : qsrf

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut La Surcharge de templates de Bundle
    bonjour,

    ayant pratiqué sf1.4 pendant plusieurs années, je découvre avec joie qu'ils ont étendu la notion d'objet et d'héritage à tout, ou presque.

    pour les twig par exemple, on peut étendre un twig, réécrire un bloc, en prenant le code du parent, ça c'est super.

    à part pour les bundles, dans la doc, on peut lire qu'il faut copier le twig dans le répertoire app, et le modifier !
    http://symfony.com/fr/doc/current/bo...ndle-templates

    plus de extends, ou de {{ parent() }} pour ajouter un bloc parent.

    donc grosse déception, ou alors j'ai mal lu ?

    qu'en pensez vous ?

    peut-on hériter un twig d'un autre bundle sans avoir à le copier dans app, juste en faisant:

    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
     
    {% extends '@SonataAdminBundle::standard_layout.html.twig' %}
     
            {% block javascripts %}
                {{ parent() }}
     
    <script>
     
    {% if form is defined  %}
    function fill_sousfamille(idfamille)
    {
        $('#{{ form.ArticleSousFamille.vars.id }}').html(Ajax('getSelectSousFamille', idfamille));
    }
    {% endif %}
     
    </script>
     
            {% endblock %}
    merci

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Bonjour,

    Il y a deux choses différentes: l'heritage dans Twig et la redéfinition des templates d'un bundle Tiers.

    As tu lu cette doc?
    http://symfony.com/fr/doc/current/co...heritance.html
    http://symfony.com/fr/doc/current/co.../override.html

    Exemple: tu utilises le FOSUserBundle, dont tout les templates héritent de FOSUserBundle::layout.html.twig https://github.com/FriendsOfSymfony/...yout.html.twig
    Ce qui serait bien c'est que ce template hérite de ton propre template de base (admettons qu'il est défini dans app/Ressources , c'est le "::base.html.twig" de symfony standard)
    C'est la que tu vas créer un fichier app/Resources/FOSUSerBundle/views/layout.html.twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    {%extends '::base.html.twig'%}{#ton template de base personalisé #}
     
    {% block body %}
     
    {% block fos_user_content %}
    {#ici le block utilisé par les différents template du FOSUserBundle#}
    {% endblock fos_user_content %}
     
    {% endblock %}
    Le FOSUserBundle est un exemple, car en général on va créer un Bundle "MonUserBundle" qui va hériter de FOSUserBundle
    et là tu peux également mettre tes templates dans MonUserBundle/Resources/views, si elles portent le même nom que dans le FOSUserBundle, elles seront utilisées en priorité

    -----

    Pour le SonataAdminBundle, tu peux encore faire différemment en redéfinissant un paramètre
    app/config/config.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    sonata_admin:
        templates:
           layout:  ::admin_layout.html.twig
    app/Resources/views/admin_layout.html.twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    {%extends 'SonataAdminBundle::standard_layout.html.twig'%}
     
    {%block javascripts %}
       {{parent()}}
       {# ton code JS perso #}
    {%endblock%}

  3. #3
    Candidat au Club
    Homme Profil pro
    qsrf
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : qsrf

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut
    merci pour ta réponse.

    je me posais la question surtout pour un bundle dont on hérite, qu'on place dans src

    /src/monBundleTruc

    j'ai essayé de réécrire le layout ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    {% extends 'SonataAdminBundle:standard_layout.html.twig' %}
     
    {% block javascripts %}
    {{ parent() }}
     
     
    function fill_sousfamille(idfamille)
    {
    	alert(idfamille+' form_ArticleSousFamille');
    }
     
     
    {% endblock %}
    en le plaçant bien sur dans Symfony\src\XXXX\monSonataAdminBundle\Resources\views\standard_layout.html.twig

    mais il y avait une erreur : il renvoyait une page vide (je voyais mes echo si j'en mettais dans le ArticleAdmin, mais sinon rien)

    est ce qu'il détecte une boucle sans fin possible, et il arrête tout ?
    je ne sais pas

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    725
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juin 2011
    Messages : 725
    Par défaut
    Je dirais que l'idée de la boucle infini serait logique.
    Dans mon précédent post il y a une méthode pour étendre proprement le layout du SonataAdminBundle, ne répond t'elle pas à ton problème?

  5. #5
    Candidat au Club
    Homme Profil pro
    qsrf
    Inscrit en
    Avril 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France

    Informations professionnelles :
    Activité : qsrf

    Informations forums :
    Inscription : Avril 2014
    Messages : 3
    Par défaut
    oui tout à fait j'ai utilisé cette méthode, elle marche très bien, merci !

    donc les bundles qui réécrivent tout le html sont "obligés" de rajouter une variable de config pour qu'on puisse rajouter notre propre code ?

    si on a pas cette méthode, et si on utilise l'héritage twig, un fichier doit hériter de
    SonataAdminBundle:standard_layout.html.twig

    on le créé dans
    Symfony\src\XXXX\monSonataAdminBundle\Resources\views\standard_layout.html.twig

    qui hérite d'un fichier dans app
    Symfony\app\Resources\views\admin_layout.html.twig

    mais, je me rends compte qu'en fait on a l'équivalent de la méthode avec la variable de config ?

Discussions similaires

  1. probleme surcharge [] sur template
    Par kranagard dans le forum Langage
    Réponses: 18
    Dernier message: 15/04/2010, 15h28
  2. [mingw] - Surcharge opérateur template
    Par buzzkaido dans le forum C++
    Réponses: 1
    Dernier message: 26/06/2009, 11h27
  3. [eZ Publish] Surcharge des templates
    Par bmcorptn dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 16/03/2009, 17h42
  4. surcharge fonction template
    Par Montag dans le forum Langage
    Réponses: 6
    Dernier message: 21/08/2008, 18h48
  5. friend surcharge classe template
    Par fridollin dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 21h37

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