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] Création d'une extension et injection de dépendances [2.x]


Sujet :

Symfony PHP

  1. #1
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut [Twig] Création d'une extension et injection de dépendances


    Petit problème lors de la création d'une extension Twig : comment faire pour que Sf2 la reconnaisse ? Il semble qu'il faille jouer avec les injections de dépendances, domaine qui me reste assez flou...

    Pour faire simple, j'ai copié ce qui se faisait dans le AcmeBundle : dans mon bundle, j'ai un dossier Twig > Gabarit > GabaritExtension.php, avec mon extension.

    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
    <?php
     
    namespace Quiz\QuizBundle\Twig\Gabarit;
     
    use Symfony\Component\HttpKernel\KernelInterface;
    use Symfony\Bundle\TwigBundle\Loader\FilesystemLoader;
     
    class GabaritExtension extends \Twig_Extension
    {
        // ...
     
        public function getFilters()
        {
            return array(
                'gab_right' => new \Twig_Filter_Method($this, 'gabRight', array('is_safe' => array('html'))),
            );
        }
     
        // ...
    }
    exit;
    Remarquez le exit; à la fin : il ne fait rien... Si je mets un var_dump juste avant, il ne m'affiche rien non plus, je crains que Sf2 n'aille jamais regarder le contenu de ce fichier...

    J'ai suivi l'exemple avec un dossier DependencyInjection à la racine de mon bundle, avec ce contenu :

    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
    <?php
     
    namespace Quiz\QuizBundle\DependencyInjection;
     
    use Symfony\Component\HttpKernel\DependencyInjection\Extension;
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    use Symfony\Component\DependencyInjection\Definition;
     
    class GabaritExtension extends Extension
    {
        public function load(array $configs, ContainerBuilder $container)
        {
            $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
            $loader->load('services.yml');
        }
     
        public function getAlias()
        {
            return 'gabarit';
        }
    }
    Et le fichier de configuration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    services:
        twig.extension.twigext:
            class: Quiz\QuizBundle\Twig\Gabarit\GabaritExtension
            tags:
                - { name: twig.extension }
    Comment faire que mon extension soit chargée ? Où faut-il enregistrer l'injection de dépendances (je crains que ce ne soit ça qui manque, car un exit; dans le fichier d'injection ne fait rien non plus) ?

    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

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

    L'injection de dépendance demande que les conventions de nommage soient bien respectées... ce que tu ne fais pas ! :p

    Pour que ton bundle soit géré comme une extension, il faut que ton fichier et ta classe extension porte le nom QuizQuizExtension (le nom de ton bundle en remplacant bundle par extension) au lieu de ton GabaritExtension actuel.
    Soyons bien d'accord : avec ce code c'est ton bundle qui devient une extension a sf2 et qui lui permet d'avoir une configuration avancée (ici, définition de ton extension twig en tant que service).

    Pour info elle fait quoi ton extension twig ?

  3. #3
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par winzou Voir le message
    Pour que ton bundle soit géré comme une extension, il faut que ton fichier et ta classe extension porte le nom QuizQuizExtension (le nom de ton bundle en remplacant bundle par extension) au lieu de ton GabaritExtension actuel.
    Tu parles du fichier d'injection de dépendances ou bien du fichier d'extension en lui-même ? J'ai renommé les deux en QuizQuizExtension en faisant les modifs qui vont bien (nom de classe et services.yml), sans que ça ne change grand chose, Twig plante toujours sur un filtre non trouvé et mes exit; ne font rien du tout...

    Citation Envoyé par winzou Voir le message
    Pour info elle fait quoi ton extension twig ?
    Pour l'inclusion d'un gabarit commun à tout le site (c'est-à-dire le même sur tous les serveurs, toutes les applications tierces installées - parfois même avec un mix de Java et de Ruby...). Tout se fait avec des inclusions de fichiers PHP et quelques variables bien définies, ce que Twig n'apprécie guère... C'est donc du très spécifique.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  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
    Dans ton répertoire Quiz\QuizBundle\DependencyInjection tu dois avoir un fichier QuizQuizExtension.php qui contient la classe QuizQuizExtension extends Extension. Cette classe transforme ton bundle en "extension symfony", ce qui te permet de charger ton fichier services.yml.

    Donc, si tu mets un var_dump/exit/whatever dans la méthode load ca fait qqch ou pas ?

    Uhm et puis rajoute aussi dans ce fichier ces use :
    use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
    use Symfony\Component\Config\FileLocator;

  5. #5
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par winzou Voir le message
    Donc, si tu mets un var_dump/exit/whatever dans la méthode load ca fait qqch ou pas ?
    Rien du tout . J'ai donc le fichier src/Quiz/QuizBundle/DependencyInjection/QuizQuizExtension.php avec ce contenu :

    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
    <?php
     
    namespace Quiz\QuizBundle\DependencyInjection;
     
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
    use Symfony\Component\HttpKernel\DependencyInjection\Extension;
    use Symfony\Component\Config\FileLocator;
     
    class QuizQuizExtension extends Extension
    {
        public function load(array $configs, ContainerBuilder $container)
        {
            $loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
            $loader->load('services.yml');
            var_dump(42);exit;
        }
     
        public function getAlias()
        {
            return 'gabarit';
        }
    }
    exit;
    Aucun des deux exit; ne fait quelque chose.

    Si ça peut être utile, je teste ça avec un route

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    homepage:
        pattern:  /42/
        defaults: { _controller: QuizBundle:Default:index }
    dans le routing.yml du dossier app, qui donne sur le fichier Quiz/QuizBundle/Controller/DefaultController.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    namespace Quiz\QuizBundle\Controller;
     
    use Symfony\Bundle\FrameworkBundle\Controller\Controller;
     
    class DefaultController extends Controller
    {
        public function indexAction()
        {
            return $this->render('QuizBundle:Default:index.html.twig');
        }
    }
    qui appelle la vue Quiz/QuizBundle/Resources/views/Default/index.html.twig

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {{ "Qt"|gab_right }}
    Hello!
    Autre angle d'approche : je sais dès le contrôleur quel contenu afficher, précisément. Il devrait être possible de mettre ça dans les variables passées à la vue Twig parente, non ? (Avec sf1, ça n'était pas si facile de faire passer des choses du contrôleur au layout principal ; là, avec l'héritage, ça devrait être mieux).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  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
    uhm je sais pas quoi te dire, j'ai la même config et ca marche chez moi, en beta1.

    Le seul point que je vois, c'est quand tu fais appel à ta vue : QuizBundle:Default:index. Ca devrait être QuizQuizBundle:Default:index non ? Du coup le fait que ca marche avec un seul Quiz m'inquiète un peu.

    Pour passer des vars au template parent je sais pas trop. Par contre ce que tu peux faire c'est passer des vars à un template que tu inclus. Ca dépend de ton organisation mais ca peut passer (tu fais appel au layout depuis le controller, avec une var $page qui inclus le bon template au milieu). C'est moins joli je te l'accorde.

  7. #7
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par winzou Voir le message
    Le seul point que je vois, c'est quand tu fais appel à ta vue : QuizBundle:Default:index. Ca devrait être QuizQuizBundle:Default:index non ? Du coup le fait que ca marche avec un seul Quiz m'inquiète un peu.
    Il me semblait aussi qu'il devrait y en avoir deux, mais un seul Quiz est la seule option qui fonctionne, sinon j'ai

    An exception has been thrown during the rendering of a template ("Template name "QuizQuizBundle::layout.html.twig" is not valid.") in "QuizBundle:Default:index.html.twig".
    500 Internal Server Error - Twig_Error_Runtime
    2 linked Exceptions: InvalidArgumentException » InvalidArgumentException »

    [3/3] Twig_Error_Runtime: An exception has been thrown during the rendering of a template ("Template name "QuizQuizBundle::layout.html.twig" is not valid.") in "QuizBundle:Default:index.html.twig".
    [2/3] InvalidArgumentException: Template name "QuizQuizBundle::layout.html.twig" is not valid.
    [1/3] InvalidArgumentException: Bundle "QuizQuizBundle" does not exist or it is not enabled. Maybe you forgot to add it in the registerBundles() function of your AppKernel.php file?
    C'est l'erreur 1/3 qui m'a fait mettre QuizBundle uniquement, puis ça fonctionne... pour cette partie-là, du moins...

    Conclusion : rapport de bogue ?
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  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
    Comment est appelé ton bundle?

    tu as "Quiz\QuizBundle\QuizBundle.php" ou "Quiz\QuizBundle\QuizQuizBundle.php"?

    La suite découle de cela. Si ta route avec QuizBundle (quiz une fois) fonctionne, je suppose(rait) que c'est la première. Donc, les extensions devrait être avec quiz une fois. Cela expliquerait pourquoi tes extensions ne fonctionnent pas.

    A suivre...

    Voici comment je charge mon extension 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
    namespace Bundle\AppBundle\DependencyInjection;
     
    use Symfony\Component\HttpKernel\DependencyInjection\Extension;
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    use Symfony\Component\DependencyInjection\Definition;
     
    class AppExtension extends Extension {
     
        public function load(array $config, ContainerBuilder $container) {
            $definition = new Definition('Bundle\AppBundle\Extension\TwigExtension');
     
            $definition->addTag('twig.extension'); // pour que twig retrouve ses jeunes
            $container->setDefinition('app_twig_extension', $definition); // ca c'est le nom de l'extension renseigné dans "getName" de l'extension Twig
        }
    }
    l'alias n'est pas nécéssaire. avant il fallait renseigner dans le config en utilisant l'alias mais maintenant il y a appel de la fonction load automatiquement.

    J'ai "AppBundle" ; donc j'utilise AppExtension.
    Te reste à savoir si ton bundle est QuizBundle ou QuizQuizExtension.
    Comme je vois que tu as
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QuizBundle:Default:index.html.twig
    , je penche pour une fois le Quiz.
    Un petit si la réponse convient. Merci.

  9. #9
    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
    C'est quand même plus joli de passer par le services.yml.
    Je savais pas qu'on pouvait nommer le bundle indépendamment du namespace, mais c'est peut-être pas une "bonne pratique" non ?

  10. #10
    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
    Perso, je trouve beaucoup plus pratique de le nommer ainsi.
    En fait, je crois que c'est surtout nécéssaire pour des bundles génériques du genre "UserBundle", il vaut bien mieux les nommer avec le namespace (FOSUserBundle par ex). Effectivement, il peut exister plusieurs de ce "type". Pour les bundles beaucoup plus "persos" ou "particulier" à l'application, je ne vois pas l'interet... après cela reste une décision personnelle. Je crois que le nom peut même être exotique... mais aucun intérêt!

    Pour le "service.yml", oui...
    Un petit si la réponse convient. Merci.

  11. #11
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 618
    Points : 188 593
    Points
    188 593
    Par défaut
    Citation Envoyé par RapotOR Voir le message
    Comment est appelé ton bundle?

    tu as "Quiz\QuizBundle\QuizBundle.php" ou "Quiz\QuizBundle\QuizQuizBundle.php"?

    La suite découle de cela. Si ta route avec QuizBundle (quiz une fois) fonctionne, je suppose(rait) que c'est la première. Donc, les extensions devrait être avec quiz une fois. Cela expliquerait pourquoi tes extensions ne fonctionnent pas.

    A suivre...
    Tu étais dans le bon ! J'ai tout remis pour qu'il n'y ait qu'un seul Quiz et ça marche ! (Il me semble que j'avais commencé par quelque chose du genre, mais bon, ça fonctionne maintenant, donc je suis content ).

    à tous !

    (BTW, ça fait l'objet d'un tuto, tout ceci servira donc au plus grand nombre ).
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  12. #12
    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
    En fait j'ai toujours trouve ca bizarre de devoir faire un dossier DependencyInjection, un QuizExtension, etc... juste pour charger un fichier de config qui est pourtant place la ou symfony pourrait l'attendre, dans config/.

    Pourquoi lorsqu'un bundle est defini dans AppKernel symfony ne va pas charger tout seul les fichiers dans config/* ? Ou alors, parce que des fois tous n'ont pas a etre charge, on pourrait definir ceux qui doivent l'etre dans le fichier QuizBundle.php a la racine du bundle.

  13. #13
    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
    @dourouc05 : youpi

    Il y a des extensions plus complexes; c'est interressant de jeter un coup d oeil aux extensions des bundles présents dans symfony , ou les bundles complexes comme fosuserbundle.

    Par contre, je suis encore un perdu concernant de potentielles configuration stockees en Session utilisateur.
    Par exemple, pour une web application où j aimerais stocker une configuration (complexe) en session, je ne me rend pas vraiment compte comment charger la dite configuration dans l'objet.
    Je pense devoir utiliser l injection de dependence pour demarrer un service... mais je ne sais pas encore comment faire le lien avec la session. (on sais acceder aux autres services?)
    Je suis en mode exploration du code symfony... j espere ne pas me noyer!
    Un petit si la réponse convient. Merci.

  14. #14
    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
    Bien sur tu peux acceder aux autres services, sinon tu pourrais pas faire grand chose :p Il suffit de les definir dans les arguments de ton propre service.

    Mais j'ai pas compris de quelle "configuration" tu parles ?

  15. #15
    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
    Par configuration, je parle de "preferences utilisateur".
    Imaginons que je decise de faire un paint en web application.
    - En arrivant sur l application, le dessin est vide et le fond est blanc (configuration par defaut).
    - L'utilisateur choisit un fond noir, place ses palettes outils, il dessine un carré et deux ronds.
    - Je stockes tout ceci en session , il n est pas obligé de s enregistrer.
    - L'utilisateur raffraichit ou revient plus tard.
    - Ses precedentes actions et configurations etant stockees en session, l application s affiche comme avant.
    Mon interrogation se porte sur la facon de mettre en place ceci proprement. j'ai deja fait ce style de chose avec ZF mais avec Sf2, je suis encore un peu perdu.

    Je viens de voir ton autre post ou tu mentionnes Lichess. Je vais regarder a ca, je crois qu il doit contenir ce que j ai besoin de savoir.
    Un petit si la réponse convient. Merci.

  16. #16
    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
    Je pense pas, dans le cas de Lichess c'est juste son objet $game qui est charge, modifie, puis persiste; le tout a coup de document MongoDB.

    Pour ta problematique c'est pas evident, si j'ai bien compris tu veux stocker vraiment de tout ? Je ne vois pas trop de solution, si ce n'est de copier le modele d'une persistence permanente en bdd : tu codes tes classes pseudo-persistentes comme des Entity, et tu leur crees un cequetuveuxManager qui va les persister non pas en bdd, mais dans la session.

    Et donc au final ton utilisation serait, par exemple pour la couleur de fond :
    * tu crees une classe layout avec des attributs : backgroundColor, UsedCss, etc
    * tu recuperes la couleur via $layout = $this->get(layout_manager)->create(); echo $layout->getBackgroundColor()
    * si dans ton controlleur tu changes la couleur, tu appelles $this->get(layout_manager)->update($layout)

    Je pense un peu a la gestion des ACL dans CommentBundle : https://github.com/FriendsOfSymfony/...entManager.php Tu as le Entity/CommentManager de base, et si tu veux gerer les ACL tu utilise Acl/AclCommentManager qui etend (ou presque ici) le manager de base, en rajoutant des actions a chaque fois (ici, verifier les acl avant de retourner les commentaires, mais pour toi ca serait verifier l'existence de l'objet en session pour en charger les parametre avant de retourner l'objet).

    Je sais pas si je suis tres clair, c'est normal ca ne l'est pas a 100% dans ma tete :p

  17. #17
    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
    Pas de souci! Les miennes n'étaient pas plus claires.

    Je vais investiguer la faisabilité de tout cela ce soir.
    Un service pour mon manager avec en argument la session. Cela me semble bien ca (et simple en plus)!

    Merci pour la reflexion; il faut parfois enlever les yeux du guidon
    Un petit si la réponse convient. Merci.

  18. #18
    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
    Je viens donner mon expérience sur cette histoire.

    alors; je dois dire que cela fonctionne pas mal du tout.. c'était tout simple.

    - J'ai un manager avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public function __construct(Session $session, $sessionName)
    - J'ai défini la DIC:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    parameters:
        myapp.manager.class:      MyApp\Bundle\MyAppBundle\Manager
        myapp.manager.session:    myapp
     
    services:
        myapp.manager:
            class:        %myapp.manager.class%
            arguments:    [@session, %myapp.manager.session%]
    La session est récupérée dans mon manager. J'ai créé un classe Bag (un peu similaire aux ParameterBag présent dans symfony mais plus générale) qui me permet de stocker et de récupérer mes infos de la session de manière très simple.

    yahou!
    Un petit si la réponse convient. Merci.

  19. #19
    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
    Et le manager en lui meme il fonctionne comment ? Tu peux nous le montrer ?

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

Discussions similaires

  1. [PHP 5.3] La création d'une extension PHP
    Par Xavier.vdw dans le forum Langage
    Réponses: 0
    Dernier message: 23/08/2010, 17h47
  2. [GvSIG] Création d'une extension java sur Gvsig 1.9
    Par crypto dans le forum SIG : Système d'information Géographique
    Réponses: 1
    Dernier message: 17/05/2010, 22h47
  3. [eZ Publish 4.1] Création d'une extension
    Par nanu dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 7
    Dernier message: 22/12/2009, 15h39

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