我正在尝试使用Silex应用程序中的twig呈现Symfony表单。我正在使用Symfony 2 Form库,Symfony Bridge Twig Forms Extension和Twig。
这是我的bootsrap文件:
require_once __DIR__ . '/../app/silex.phar';
$app = new Silex\Application();
$app['debug'] = true;
// Set up the autoloader
require_once __DIR__ . '/../app/vendor/.composer/autoload.php';
// Load Configuration into container
$parser = new Symfony\Component\Yaml\Parser();
$config = $parser->parse(file_get_contents(__DIR__ . '/../app/config/config.yml'));
$app['config'] = $config;
// Set up Symfony bridge (nice twig functions)
$app->register(new Silex\Provider\SymfonyBridgesServiceProvider(), array(
'symfony_bridges.class_path' => __DIR__ . '/vendor/symfony/twig-bridge',
));
// Set Up Templating
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => __DIR__ . '/../app/views',
'twig.class_path' => __DIR__ . '/../app/vendor/twig/twig/lib',
));
// Set Up Database
$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
'db.options' => array(
'driver' => $app['config']['db']['driver'],
'host' => $app['config']['db']['host'],
'user' => $app['config']['db']['user'],
'password' => $app['config']['db']['password'],
'dbname' => $app['config']['db']['dbname']
),
'db.dbal.class_path' => __DIR__ . '/vendor/doctrine/doctrine-dbal/lib',
'db.common.class_path' => __DIR__ . '/vendor/doctrine/doctrine-common/lib',
));
// Set up the Symfony forms component
$app->register(new Silex\Provider\FormServiceProvider());
// Routes
$app->get('/', function() use($app)
{
return $app['twig']->render('index.twig', array());
});
$app->get('/info', function() use($app)
{
return $app['twig']->render('info.twig', array());
});
$app->get('/register', function() use($app)
{
$builder = $app['form.factory']->createBuilder(new MppInt\Form\Type\RegisterType() )
->add('id', 'text')
->add('firstName', 'text')
->add('lastName', 'text')
->add('email', 'password')
->add('password', 'text');
$form = $builder->getForm();
return $app['twig']->render('register.twig', array('form' => $form->createView()));
});
$app->run();
我收到以下错误:
Twig_Error_Runtime:变量“已禁用”不存在。
堆栈跟踪非常大,但这里是前两个条目:
在/nfs/personaldev/bwaine/mpp-audit/app/vendor/twig/twig/lib/Twig/Template.php第303行
- 醇>
在Twig_Template-> getContext(array('value'=>'','attr'=> array(),'form'=> object(FormView),'id'=&gt ;'register_firstName','name'=>'firstName','full_name'=>'register [firstName]','errors'=> array(),'read_only'=> false,'required'= > true,'max_length'=> null,'pattern'=> null,'size'=> null,'label'=>'Firstname','multipart'=> false,'types'= > array('field','text'),'type'=>'text'),'disabled')/ nfs / personaldev / bwaine / mpp-audit / app / vendor / twig / twig / lib / Twig / Environment.php(314):eval()'d代码行986
有没有人知道最新情况?
编辑 -
我认为'禁用'变量在默认模板中。
来自vendor / symfony / twig-bridge / Symfony / Bridge / Twig / Resources / views / Form / form_div_layout.html.twig
{% block widget_attributes %}
{% spaceless %}
id="{{ id }}" name="{{ full_name }}"{% if read_only %} readonly="readonly"{% endif %}{% if disabled %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if max_length %} maxlength="{{ max_length }}"{% endif %}{% if pattern %} pattern="{{ pattern }}"{% endif %}
{% for attrname,attrvalue in attr %}{{attrname}}="{{attrvalue}}" {% endfor %}
{% endspaceless %}
{% endblock widget_attributes %}
按要求 - register.twig
register.twig
{% extends "base.twig" %}
{% block title %}Welcome to Nuts.co.uk{% endblock %}
{% block head %}
{{ parent() }}
{% endblock %}
{% block content %}
<div class="row">
<div class="span12">
<h2>Register</h2>
<p>
Register for Nuts.co.uk and we'll give you free access to cool stuff
in addition you can subscribe to our premium content.
</p>
<form action="/contact" method="post">
<fieldset >
<legend>Contact</legend>
{{ form_errors(form) }}
{{ form_row(form.firstName) }}
{{ form_row(form.lastName) }}
{{ form_row(form.email) }}
{{ form_row(form.password) }}
<button type="submit" class="btn btn-info">Send</button>
</fieldset>
</form>
</div>
</div>
{% endblock %}
答案 0 :(得分:3)
您似乎在twig模板中使用了一个禁用变量(可能是{{disabled}}或者在if语句中),但是您没有传递给模板。在上面粘贴的代码中,我没有看到任何名为'disabled'的变量被传递给twig ...