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.
我在我的 composer.json
文件中包含以下内容:
{
"require": {
"silex/silex": "1.*",
"twig/twig": ">=1.8,<2.0-dev",
"symfony/twig-bridge": "2.3.*"
}
}
我像这样注册TwigServiceProvider()
:
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__ . '/views'
));
我正在尝试使用 twig path()
方法,如下所示:
<a href="{{ path('logout') }}">Log out</a>
我得到的错误如下:
Twig_Error_Syntax: The function "path" does not exist
为什么我会收到此错误?
- 我尝试过切换版本来检查是否是版本问题
- 一条 Google 群组评论建议“注册”twig Bridge 提供商,但这并不存在
- 我不想必须在我的所有模板中使用:
app.url_generator.generate
我找到的临时解决方案:
确保 UrlGeneratorServiceProvider()
已注册:
$app->register(new UrlGeneratorServiceProvider());
为 twig 创建一个新函数 path()
:
$app['twig']->addFunction(new \Twig_SimpleFunction('path', function($url) use ($app) {
return $app['url_generator']->generate($url);
}));
我不应该这样做!!我怎样才能让它正常工作?
最佳答案
希望这对 future 的观众有所帮助,因为许多人都提出了这个问题,但没有得到可靠的答案,所以这里是一个。
从字面上看,您需要注册UrlGeneratorServiceProvider()
$app->register(new UrlGeneratorServiceProvider());
此外,正如 umpirsky 在评论中提到的,您需要通过 Composer 安装 symfony/twig-bridge
。
您不需要添加自己的函数。在加载 Twig 模板之前,您需要注册 TwigServiceProvider()
和 UrlGeneratorServiceProvider()
。从文档中这并不容易看出。
关于php - Silex-Twig_Error_Syntax : The function "path" does not exist,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19092585/