php - Silex-Twig_Error_Syntax : The function "path" does not exist

标签 php symfony twig silex

根据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.

我在我的 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/

相关文章:

php - 如何使用 Doctrine 和 Symfony2 调试失败的数据库写入?

php - Symfony2 表单事件 PreSetData 订阅者

templates - Drupal 8 Twig 模板 : get relative or absolute path from URI

带有 json 收集数据的 PHP 页面在 ubuntu 上不起作用,在 Windows 服务器上也能同样工作

javascript - 无法让 ajax 显示在页面中,但可以在谷歌元素检查器中看到

javascript - 如何根据 html 表单中的下拉选择更改输入名称?

forms - Twig 上 form_widget 选择的占位符

php - 使用 sizeof() 将代码从 C++ 移植到 PHP

php - Symfony2 - 强制用户完成个人资料

xml - 尝试在 PhpStorm 的 Twig 模板中启用 XML 语言