Bonjour,
J'aimerais créé un test personnel afin de comprendre son implémentation. Voici le code:
-Création de l'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
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'; } }
-Enregistrement 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 <?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(')') ; } }
Du coup, j'obtient cette erreur:
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 }
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 ligneFatalErrorException: Error: Class 'Foo' not found in C:\wamp\www\Symfony\vendor\twig\twig\lib\Twig\Extension\Core.php line 277par
Code : Sélectionner tout - Visualiser dans une fenêtre à part new \Twig_SimpleTest('foo', null, array('node_class' => 'Foo')),et celle-ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part new \Twig_SimpleTest('foo', null, array('node_class' => 'Twig_Node_Expression_Test_Foo')),par
Code : Sélectionner tout - Visualiser dans une fenêtre à part class Foo extends \Twig_Node_Expression_TestJ'aimerais avoir votre avis car cela ne me semble pas normal de mettre une extension personnalisée dans le dossier vendor.
Code : Sélectionner tout - Visualiser dans une fenêtre à part class Twig_Node_Expression_Test_Foo extends \Twig_Node_Expression_Test
Merci d'avance!
Partager