簡體   English   中英

使用時出錯 Symfony Forms / Silex & Twig

[英]Error When Using Symfony Forms / Silex & Twig

我正在嘗試在 Silex 應用程序中使用 twig 呈現 Symfony 表單。 我正在使用 Symfony 2 Form library、Symfony Bridge Twig Forms Extension 和 Twig。

這是我的引導文件:

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:變量“禁用”不存在。

堆棧跟蹤非常大,但這里是前兩個條目:

  1. 在 /nfs/personaldev/bwaine/mpp-audit/app/vendor/twig/twig/lib/Twig/Template.php 行 303

  2. 在 Twig_Template->getContext(array('value' => '', 'attr' => array(), 'form' => object(FormView), 'id' => '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') in /nfs/personaldev/bwaine/mpp-audit/app/vendor/twig/twig/lib/Twig/Environment.php(314): eval()'d code line 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 %}

根據要求-注冊.twig

注冊.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 %}

您似乎在 twig 模板中使用了一個未傳遞給模板的變量(如 {{ disabled }} 或在 if 語句中)。 在上面粘貼的代碼中,我沒有看到任何名為“disabled”的變量被傳遞給 twig...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM