According to the Silex documentation:
Symfony provides a Twig bridge that provides additional integration between some Symfony2 components and Twig. Add it as a dependency to your composer.json file.
I include the following in my composer.json
file:
{
"require": {
"silex/silex": "1.*",
"twig/twig": ">=1.8,<2.0-dev",
"symfony/twig-bridge": "2.3.*"
}
}
I register the TwigServiceProvider()
like so:
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__ . '/views'
));
I'm attempting to use the twig path()
method like so:
<a href="{{ path('logout') }}">Log out</a>
The error I get is as follows:
Twig_Error_Syntax: The function "path" does not exist
Why am I getting this error?
- I have tried switching around versions to check if it is a version issue
- One google groups comment suggested 'registering' the twig bridge provider, but this doesn't exist
- I don't want to have to use:
app.url_generator.generate
in all my templates instead
A temporary solution I have found:
Ensure The UrlGeneratorServiceProvider()
is registered:
$app->register(new UrlGeneratorServiceProvider());
Create a new function for twig for path()
:
$app['twig']->addFunction(new \Twig_SimpleFunction('path', function($url) use ($app) {
return $app['url_generator']->generate($url);
}));
I shouldn't have to do this!! How can I get this working properly?