我正在玩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 debuger那里得到了这个错误:
ExpressionParser.php第573行中的1/1 Twig_Error_Syntax:未知 第35行“post.twig”中的“form_widget”函数。
如果我注释掉这行代码:
// $app['twig']->addExtension(new Twig_Extension_Debug());
在我的前端控制器中,一切正常,表格渲染没有任何问题。
这是twig调试扩展的问题吗?也许有些不相容?。
我不需要使用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"
}
}
答案 0 :(得分:0)
确保symfony/twig-bridge
集成了您的项目。
答案 1 :(得分:0)
我想这个例子为我排序了问题(在Pimple中包含扩展的新方法):
// CONFIG
// turn on debug in silex
$app['debug'] = true;
// register twig and enable debug
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__.'/../templets',
'twig.options' => array('debug' => true),
)
);
// add twig debug extension in Pimpel (the new way)
$app['twig'] = $app->share($app->extend('twig', function($twig, $app) {
$twig->addExtension(new \Twig_Extension_Debug());
return $twig;
}));