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 :

Symfony2-Twig Extension:Erreur lors de création d'un test [2.x]


Sujet :

Symfony PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 30
    Points
    30
    Par défaut Symfony2-Twig Extension:Erreur lors de création d'un test
    Bonjour,
    J'aimerais créé un test personnel afin de comprendre son implémentation. Voici le code:
    -Création de l'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
    <?php
    //src/Test/Bundle/Twig/FooExtension.php
    namespace Test\Bundle\Twig;
    class FooExtension extends \Twig_Extension
    {
     
        public function getTests()
        {
            return array(
                new \Twig_SimpleTest('foo', null, array('node_class' => 'Foo')),
            );
        }
     
        public function getName()
        {
            return 'foo_extension';
        }
    }
    -Class Foo
    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
    <?php
    //C:\wamp\www\Symfony\src\Test\Bundle\Twig\Foo.php
     
    class Foo extends \Twig_Node_Expression_Test
    {
        public function compile(\Twig_Compiler $compiler)
        {
            $compiler
                ->raw('(')
                ->subcompile($this->getNode('node'))
                ->raw(' % 2 == 1')
                ->raw(')')
            ;
        }
    }
    -Enregistrement de l'extension
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    services:   
     
        test.twig.foo_extension:
            class: Test\Bundle\Twig\FooExtension
            tags:
                - { name: twig.extension }
    Du coup, j'obtient cette erreur:
    FatalErrorException: Error: Class 'Foo' not found in C:\wamp\www\Symfony\vendor\twig\twig\lib\Twig\Extension\Core.php line 277
    Je crois ce serait dû à l'emplacement de ma classe Foo. En essayant de le déplacer vers C:\wamp\www\Symfony\vendor\twig\twig\lib\Twig\Node\Expression\Test\Foo.php, cela fonctionne bien. Mais avant, il a fallut que je remplace cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new \Twig_SimpleTest('foo', null, array('node_class' => 'Foo')),
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new \Twig_SimpleTest('foo', null, array('node_class' => 'Twig_Node_Expression_Test_Foo')),
    et celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Foo extends \Twig_Node_Expression_Test
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    class Twig_Node_Expression_Test_Foo extends \Twig_Node_Expression_Test
    J'aimerais avoir votre avis car cela ne me semble pas normal de mettre une extension personnalisée dans le dossier vendor.

    Merci d'avance!

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 168
    Points : 219
    Points
    219
    Par défaut
    Salut,
    tu ne donnes pas le bon chemin

    Foo est dans le dossier src/Test/Bundle/Twig
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new \Twig_SimpleTest('foo', null, array('node_class' => 'Test\Bundle\Twig\Foo')),
    puis tu met le namespace
    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 Test\Bundle\Twig;
     
    class Foo extends \Twig_Node_Expression_Test
    {
        public function compile(\Twig_Compiler $compiler)
        {
            $compiler
                ->raw('(')
                ->subcompile($this->getNode('node'))
                ->raw(' % 2 == 1')
                ->raw(')')
            ;
        }
    }
    et puis tu test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    {% set arr = [1, 2, 3, 4, 5] %}
    {% for a in arr %}
    	{% if a is foo %}
    	<div>impair {{a}}</div>
    	{% else %}
    	<div>pair {{a}}</div>
    	{% endif %}
    {% endfor %}
    @+

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 30
    Points : 30
    Points
    30
    Par défaut
    Parfait!
    Merci.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 31/07/2009, 11h53
  2. Erreur lors de création dynamique de TEdit
    Par Xavier dans le forum C++Builder
    Réponses: 5
    Dernier message: 22/05/2008, 10h26
  3. Erreur lors de création de class
    Par yLaplace dans le forum C++
    Réponses: 5
    Dernier message: 15/02/2008, 11h39
  4. erreur lors de création de miniature !
    Par Byakuya dans le forum Langage
    Réponses: 5
    Dernier message: 28/05/2007, 17h31
  5. Erreur lors de création d'un MDE
    Par delcroixf dans le forum Access
    Réponses: 1
    Dernier message: 11/02/2007, 07h45

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