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] Récupérer depuis une vue les variables globales d'un Bundle [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur Web PHP5/Symfony
    Inscrit en
    Janvier 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 12
    Points : 14
    Points
    14
    Par défaut [Twig] Récupérer depuis une vue les variables globales d'un Bundle
    Bonjour,

    Voici mon problème : je souhaite afficher des variables définies dans le config.xml de mon Bundle.

    Exemple, dans Exemple/MonBundle/Resources/config/config.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8" ?>
     
    <container xmlns="http://symfony.com/schema/dic/services"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">
     
        <parameters>
            <parameter key="test.ma_variable">Exemple</parameter>
        </parameters>
    </container>
    J'utilise $this->container->getParameter('test.ma_variable') pour appeler ma variable depuis mon controller, mais je ne sais pas comme l'afficher depuis ma vue Twig.

    Quelqu'un peut-il m'aider ?

    Merci par avance.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Points : 201
    Points
    201
    Par défaut
    Bonjour,

    la solution me semble évidente,

    Lorsque vous appelez votre vue depuis votre contrôleur ajoutez un paramètre avec la variable à afficher.

    Par exemple, si vous utilisez l'annotation "@Template" sur votre Action voici la marche à suivre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return array('var' => $this->container->getParameter('test.ma_variable'));
    Si vous appelez un template Twig particulier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return $this->render('VotreBundle:Dossier:fichier.html.twig', array('var' => $this->container->getParameter('test.ma_variable')));
    puis dans Twig :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ma variable => {{ var }}
    De la lecture : http://symfony.com/doc/2.0/quick_tour/the_view.html

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur Web PHP5/Symfony
    Inscrit en
    Janvier 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Merci pour cette réponse.

    En fait, l'idée est d'appeler une variable globale définie pour un CommonBundle de mon application sans avoir à la passer depuis le render() de mon controller.

    L'idée est d'avoir le même comportement que l'app.yml de symfony 1.4.

  4. #4
    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,

    Tu ne peux pas, les seules vara globales disponibles sont dans Symfony\Bundle\FrameworkBundle\Templating\GlobalVariables

    Mais tu peux toujours creer un listener qui va ajouter des variables a tes vues, ca sera plus propre. C'est le seul moyen de faire un truc "pour tous les controleurs".

  5. #5
    Membre à l'essai
    Homme Profil pro
    Développeur Web PHP5/Symfony
    Inscrit en
    Janvier 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Merci pour cette information et ce conseil winzou.

    Pour le moment, je n'ai pas besoin de "globaliser" des variables pour mes controllers mais plutôt pour mes vues (nom et url du projet par exemple).

    Je vais donc plutôt les définir dans /app/config/config.yml au niveau de Twig :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # Twig Configuration
    twig:
        debug:            %kernel.debug%
        strict_variables: %kernel.debug%
        globals:
          project:
            name: NomDuProjet
            url: http://www.monprojet.com
    C'est sûrement pas ce qu'il y a de mieux, mais ça me permet d'accéder à la variable par un simple {{ project.name }} depuis ma vue.

    Si ça peut servir à quelqu'un...

    Merci encore !

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    55
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2012
    Messages : 55
    Points : 30
    Points
    30
    Par défaut
    Bonjour kalash_jako,

    Moi aussi je veux récuperer ma variable dans twig et j'ai suivi tes etapes mais ca marche pas voila mon code

    page twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form method="post" {{ form_enctype(form) }}>
     
    	{{ form_widget(form) }}
     
     
    	<input type="submit" />
    	 {{ var }}
    </form>
    controller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
      return $this->container->get('templating')->renderResponse(
    'MyAppAvvBundle:Default:organisation.html.twig',
      array(
        'form' => $form->createView(),
        'message' => $message,
         'var' => $this->container->getParameter($id)
    erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The parameter "11" must be defined.
    Merci d'avance

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

Discussions similaires

  1. Appeler des variables de session depuis une vue
    Par keekLG dans le forum Langage
    Réponses: 3
    Dernier message: 14/02/2012, 13h49
  2. Réponses: 6
    Dernier message: 07/04/2006, 01h10
  3. Supprimer la mémoire utilisée par les variables globales
    Par dnaprotector dans le forum OpenGL
    Réponses: 4
    Dernier message: 21/07/2005, 13h18
  4. question sur les variables globales et les thread posix
    Par souris_sonic dans le forum POSIX
    Réponses: 5
    Dernier message: 13/06/2003, 13h59
  5. les variables globales static
    Par gRRosminet dans le forum C
    Réponses: 8
    Dernier message: 27/04/2002, 08h34

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