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] Form Theming with variables


Sujet :

Symfony PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Porteur de projets Web
    Inscrit en
    Mai 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Porteur de projets Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 41
    Points : 41
    Points
    41
    Par défaut [Twig] Form Theming with variables
    Bonjour,

    Je redéfinis dans tous mes bundles le block field_label comme suit, de manière à pouvoir traduire le label :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #dans MonBundle/Resources/views/form.html.twig
    {% extends "TwigBundle:Form:div_layout.html.twig" %}
     
    {% block field_label %}
        <label for="{{ id }}">
            {{ id|trans([], 'MonBundle') }}
        </label>
    {% endblock %}
    avec 'MonBundle' qui est la seule variable qui est modifiée à chaque fois.

    Puis j'applique mon form_theme comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #dans MonBundle/Resources/views/exemple.html.twig, juste avant la balise <form>
    {% form_theme form 'MonBundle::form.html.twig' %}
    Ma question est : existe-t-il un moyen, de fournir la variable 'MonBundle' en argument, de façon à ne pas avoir à dupliquer ce code dans chaque bundle où j'en ai besoin ?

    D'avance merci.

  2. #2
    Membre du Club
    Homme Profil pro
    Porteur de projets Web
    Inscrit en
    Mai 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Porteur de projets Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 41
    Points : 41
    Points
    41
    Par défaut
    Ce sujet n'a pas l'air d'inspirer grand monde.
    J'ai tout de même avancé dans cette réflexion et je suis parvenu à transmettre des données en arguments de cette façon, lorsque j'affiche mon formualire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ form_widget(form, { 'attr': { 'nomDeMaVariable': 'contenuDeMaVariable' } }) }}
    Ainsi, je suis capable de le récupérer dans le block form_widget situé dans le fichier form_div_layout.html.twig qu'il me suffit de redéfinir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    {% block form_widget %}
    {% spaceless %}
        <div {{ block('container_attributes') }}>
            {{ block('field_rows') }}
            {{ form_rest(form) }}
        </div>
    {% endspaceless %}
    {% endblock form_widget %}
    Mais, comme on peut le voir, ce block intègre le block 'field_rows', à qui j'aimerais faire redescendre les arguments. Du coup, ma question plus précise est, peux-t-on transmettre des arguments d'une quelconque façon au niveau de l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {{ block('field_rows') }}
    ?

    D'avance merci.

  3. #3
    Membre éclairé
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Points : 687
    Points
    687
    Par défaut
    Salut !
    Tu n'es pas obligé de créer une nouvelle variable pour traduire tes labels de formulaire, il y a beaucoup plus simple, comme c'est expliqué dans ce tuto qui va bientôt être publié :

    http://j-place.developpez.com/tutori...avec-symfony2/

    A++

  4. #4
    Membre du Club
    Homme Profil pro
    Porteur de projets Web
    Inscrit en
    Mai 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Porteur de projets Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 41
    Points : 41
    Points
    41
    Par défaut
    Ma problématique est un peu différente.

    Je veux redéfinir le rendu des mes formulaires. Du coup, je redéfinis quelques blocks de form_div_layout.html.twig dans un nouveau fichier form.html.twig.
    Ce fichier est placé à l'extérieur des bundles de façon à être factorisé et pouvoir être utilisé par différents bundles.

    En ce qui concerne la traduction, ce qui est fait dans le tutoriel n'est valable que si le fichier est à l'intérieur d'un bundle, mais dans mon cas, je dois lui fournir "manuellement", le bundle où il doit trouver les traduction, en fonction du bundle qui l'utilise.

    J'espère que c'est assez clair...

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut,
    J'ai la même problématique que toi rica1503.
    Tu as trouvé la solution?

    Merci

  6. #6
    Membre du Club
    Homme Profil pro
    Porteur de projets Web
    Inscrit en
    Mai 2011
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Porteur de projets Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 41
    Points : 41
    Points
    41
    Par défaut
    Non, malheureusement, je duplique mon fichier. C'est pas très joli, mais bon.
    Si tu trouves, je suis preneur...
    Bon courage!

  7. #7
    Membre averti
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2004
    Messages
    318
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    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
    Je n'ai pas la solution, mais vous pouvez utiliser une macro, ou tout simplement un include d'un autre template. Je pense que c'est une bonne alternative.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    Normalement, lors de l'appel d un block, les variables ne changent pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    {% block block1 %}
    {% set toto = 'salut' %}
    {{ block('block2') }}
    {% endblock block1 %}
     
    {% block block2 %}
    {{ toto }}
    {% endblock block2 %}

Discussions similaires

  1. Envoi d'un mail mis en forme avec données variables
    Par eti_lac dans le forum VBA Access
    Réponses: 1
    Dernier message: 21/11/2007, 15h53
  2. [Forms 6i] pb variable
    Par the_youpi dans le forum Forms
    Réponses: 6
    Dernier message: 18/10/2006, 19h57
  3. Réponses: 1
    Dernier message: 22/09/2006, 11h19
  4. [C#] Form avec panel variable
    Par Tips dans le forum Windows Forms
    Réponses: 12
    Dernier message: 19/09/2006, 15h21

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