Silex-Twig_Error_Syntax:函数“路径”不存在 - php

根据Silex documentation:

Symfony提供了一个Twig桥,该桥在某些Symfony2组件和Twig之间提供了额外的集成。将其作为依赖项添加到composer.json文件。

我在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'
));

我试图像这样使用树枝path()方法:

<a href="{{ path('logout') }}">Log out</a>

我得到的错误如下:

Twig_Error_Syntax:函数“路径”不存在

为什么会出现此错误?

我尝试过切换版本以检查是否是版本问题
一个Google网上论坛评论建议“注册”树枝桥提供商,但这不存在
我不想在所有模板中都使用:app.url_generator.generate

我发现了一个临时解决方案:

确保UrlGeneratorServiceProvider()已注册:

$app->register(new UrlGeneratorServiceProvider());

path()的树枝创建一个新函数:

$app['twig']->addFunction(new \Twig_SimpleFunction('path', function($url) use ($app) {
    return $app['url_generator']->generate($url);
}));

我不必这样做!如何使它正常工作?

参考方案

希望这将有助于将来的观众,因为许多观众在没有明确答案的情况下发布了此问题,因此这里是一个。

实际上,您需要注册UrlGeneratorServiceProvider()

$app->register(new UrlGeneratorServiceProvider());

另外,正如umpirsky在评论中提到的那样,您需要通过composer安装symfony/twig-bridge

您不需要添加自己的功能。加载树枝模板之前,需要同时注册TwigServiceProvider()UrlGeneratorServiceProvider()。从文档中很难看出这一点。

php:是否有充分的理由引用所有数组键/索引? - php

我正在遍历别人的代码,他们总是避免转义其数组键。例如:$ row_rsCatalogsItems [名称]代替$ row_rsCatalogsItems ['名称']因此,我不断地对自己接触的所有事物进行微小的更改,以应对这些惰性。但是现在我想知道这样做是否有很多好处。我得到它会在默认为字符串之前检查常量(我在处理常量时会讨厌php中的行为,因为即使未定义,…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…

php fopen相对路径断开-神秘 - php

我知道“必须进行某些更改”,但是我的代码似乎整夜无故中断。我的服务器目录结构是这样的: / /脚本 /审计 /其他事情我在“脚本”文件夹中有一个脚本(假设它被称为“ /scripts/MyScript.php”),该脚本使用curl收集网页中的数据,并将其日期过的副本保存在“审核”文件夹中。要写入审核文件夹,我使用了 $ fh = fopen(“ ./ au…

Yii,yiic和console - php

在Yii的安装说明中,有必要使用控制台和命令行实用程序-yiic。好吧,在我的共享主机上,我没有SSH访问权限。这就是为什么我有以下问题:我必须多久使用一次控制台?出于什么原因?有办法避免使用Yiic吗?我可以在本地服务器上运行yiic,然后将所有内容传输到最终的Web服务器吗?谢谢! php参考方案 来自Yii论坛的答案:不,您不在生产服务器上使用yiic…

在访问另一页面后保留浏览器滚动位置 - php

我正在使用JS,JQuery和PHP,试图解决无限滚动问题。问题是,如果您在页面上滚动很长一段时间,并且用ajax加载了更多页面,然后单击链接转到新页面,那么在使用浏览器时如何自动转到旧页面中的同一位置新页面上的返回按钮?。新页面使用ajax滚动加载。 php参考方案 我想出的解决方案是在离开页面之前,将每个页面与相关数据一起存储。需要以下信息来保持滚动位置…