Silex&x2B;Twig:form_widget()未找到,即使安装了Symfony Bridge
我一直在关注下面资源中的文档 但是我得到了以下错误Silex&x2B;Twig:form_widget()未找到,即使安装了Symfony Bridge,symfony,twig,symfony-forms,silex,Symfony,Twig,Symfony Forms,Silex,我一直在关注下面资源中的文档 但是我得到了以下错误 Twig_Error_Syntax: The function "form_widget" does not exist in "layout.html.twig" 我已经多次检查了文档和我的源代码,我仍然看不出哪里出了问题,我遗漏了什么?我已经安装了Symfony细枝桥 <?php require_once __DIR__.'/vendor/autoload.php'; use Symfony\Component\HttpFoun
Twig_Error_Syntax: The function "form_widget" does not exist in "layout.html.twig"
我已经多次检查了文档和我的源代码,我仍然看不出哪里出了问题,我遗漏了什么?我已经安装了Symfony细枝桥
<?php
require_once __DIR__.'/vendor/autoload.php';
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Yaml\Parser;
use Silex\Provider\FormServiceProvider;
$app = new Silex\Application();
$app['debug'] = true;
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__. '/src/views',
'twig.options' => array(
'debug' => true,
'cache' => false
),
));
$app['twig']->addExtension(new Twig_Extension_Debug());
$app['yaml'] = new Parser();
//.....
$app->register(new FormServiceProvider());
$app->register(new Silex\Provider\ValidatorServiceProvider());
$site['name'] = 'My Site';
// More definitions for $site
$app->match('/', function() use($app, $site) {
return $app['twig']->render('layout.html.twig', $site);
})->method('POST|GET');
$app->match('/form/', function(Request $request) use($app, $site) {
$data = array(
'name' => 'Your name',
'email' => 'Your email',
);
$form = $app['form.factory']->createBuilder('form', $data)
->add('name')
->getForm();
if ('POST' == $request->getMethod()) {
$form->bindRequest($request);
if ($form->isValid()) {
$data = $form->getData();
// do something with the data - I haven't got that far yet
// redirect somewhere
return $app->redirect('/');
}
}
$site['form'] = $form->createView();
return $app['twig']->render('form.html.twig', $site);
})->method('POST|GET');
$app->run();
您需要先注册表单提供程序,然后注册细枝提供程序
twig提供程序,并且仅在必要时启用与表单相关的twig扩展。“symfony/twig bridge”:“2.1.*”
已经在composer.jsontanks中,非常有效。当我更改代码以首先注册FormServiceProvider时,它找不到过滤器“trans”,因此我还添加了$app->register(new-Silex\Provider\TranslationServiceProvider(),array('locale\u fallback'=>'en',)代码>之后,这是它需要的。但随后我收到一个错误致命错误:在第47行的{mywebsiteroot}\vendor\Symfony\translation\Symfony\Component\translation\Loader\XliffFileLoader.php中找不到类'Symfony\Component\Config\Resource'。如果使用Silex的fat版本,它没有“Symfony/Config”:“dev master”,
包含在composer.json文件中,因此我添加了它并运行了更新。在那之后就行了。我想如果有人遇到类似的问题,在这里记录下来会很有用。我记得你不久前在GitHub上提出了一个问题,关于胖版Silex中缺少symfony/config,我在symfony/symfony上提出了问题,但被拒绝了(这是理所当然的,因为它只是silex默认配置中的一个依赖项)!
{
"require": {
"silex/silex" : "dev-master",
"symfony/config" : "dev-master",
"symfony/yaml" : "dev-master",
"doctrine/common" : ">=2.1,<2.3-dev",
"doctrine/dbal" : ">=2.1,<2.3-dev",
"symfony/dependency-injection": "dev-master",
"symfony/console" : "dev-master",
"monolog/monolog" : ">=1.0.0",
"twig/twig" : ">=1.2.0",
"symfony/form" : "2.1.*",
"symfony/translation": "2.1.*",
"symfony/twig-bridge": "2.1.*",
"symfony/validator": "2.1.*"
}
}