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:
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:
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:
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:
Citation:
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:
new \Twig_SimpleTest('foo', null, array('node_class' => 'Foo')),
par
Code:
new \Twig_SimpleTest('foo', null, array('node_class' => 'Twig_Node_Expression_Test_Foo')),
et celle-ci:
Code:
class Foo extends \Twig_Node_Expression_Test
par
Code:
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!