提问者:小点点

使用Symfony窗体/Silex时出错


我试图在Silex应用程序中使用树枝渲染Symfony表单。我使用Symfony 2窗体库,Symfony Bridge Twig窗体扩展和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();

我得到以下错误:

细枝错误运行时:变量“已禁用”不存在。

堆栈跟踪非常大,但以下是前两个条目:

>

  • 在/nfs/personaldev/bwaine/mpp audit/app/vendor/twig/twig/lib/twig/Template中。php第303行

    at Twig_模板-

    有人知道发生了什么事吗?

    编辑-

    我认为“disabled”变量在默认模板中。

    来自供应商/Symfony/twig-bridge/Symfony/Bridge/Twig/Resources/view/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 %}
    

    按要求-注册。细枝

    登记细枝

    {% 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 %}
    

  • 共1个答案

    匿名用户

    您似乎在细枝模板(比如{disabled}}或者在if语句中)中使用了一个禁用的变量,但没有传递给模板。在上面粘贴的代码中,我没有看到任何名为“disabled”的变量被传递给twig。。。