我正在玩 Silex 微框架。首先,我使用 composer 为 Twig 安装了 Twig 扩展:
composer require twig/extensions
我将此配置添加到我的前端控制器(index.php):
// CONFIG
// turn on debug in Silex microframework
$app['debug'] = true;
// set default twig file location
// turn on debuging for Twig extension in Silex
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__.'/../templets',
'twig.options' => array('debug' => true),
)
);
$app['twig']->addExtension(new Twig_Extension_Debug());
// Symfony2 extension for building and validating forms in Silex
$app->register(new Silex\Provider\FormServiceProvider());
$app->register(new Silex\Provider\ValidatorServiceProvider());
$app->register(new Silex\Provider\TranslationServiceProvider());
一切都可以按预期工作,但是在使用小部件创建表单时
{{ form_widget(form) }}
我从 Twig 调试器收到此错误:
ExpressionParser.php 第 573 行中的 1/1 Twig_Error_Syntax:第 35 行的“post.twig”中的未知“form_widget”函数。
如果我注释掉这行代码:
// $app['twig']->addExtension(new Twig_Extension_Debug());
在我的前端控制器中,一切正常,表单渲染没有问题。
这是树枝调试扩展的问题吗?也许有些不兼容?
我不需要使用 widget_form 在树枝中呈现我的表单。我只是将它用于快速测试目的,然后才能正确地在 twig 中编写渲染 - 但我仍然看不出 twig 会为此抛出错误的原因。
这是我的 composer.json
{
"require": {
"silex/silex": "~1.3",
"symfony/browser-kit": "~2.3",
"symfony/console": "~2.3",
"symfony/config": "~2.3",
"symfony/css-selector": "~2.3",
"symfony/dom-crawler": "~2.3",
"symfony/filesystem": "~2.3",
"symfony/finder": "~2.3",
"symfony/form": "~2.3",
"symfony/locale": "~2.3",
"symfony/process": "~2.3",
"symfony/security": "~2.3",
"symfony/serializer": "~2.3",
"symfony/translation": "~2.3",
"symfony/validator": "~2.3",
"symfony/monolog-bridge": "~2.3",
"symfony/twig-bridge": "~2.3",
"doctrine/dbal": ">=2.2.0,<2.4.0-dev",
"swiftmailer/swiftmailer": "5.*",
"twig/extensions": "^1.3"
}
}