2012-04-10 72 views
11

我想在Silex應用程序中使用樹枝呈現Symfony窗​​體。我使用的是Symfony 2 Form庫,Symfony Bridge Twig Forms Extension和Twig。使用Symfony Forms/Silex&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:變速 「已禁用」 不存在。

堆棧跟蹤是非常大的,但這裏有前兩個項目:

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

  2. at 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

有沒有人有任何想法怎麼回事?

編輯 -

我覺得「禁用」變量是默認模板。

從供應商/ symfony中/枝橋/ Symfony的/橋樑/嫩枝/資源/視圖/表格/ 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 %} 
+1

請提供'register.twig'的源代碼。 – igorw 2012-04-10 15:16:13

回答

3

你似乎使用您的樹枝模板禁用的變量(如{{禁用}}或if語句也許)你沒有傳遞給模板。在上面粘貼的代碼中,我看不到任何名爲'disabled'的變量正在傳遞給樹枝...

+0

Hey Skoop - 它看起來像變量'默認'是在默認模板用於呈現表單。我認爲它會自動設置爲somwhere。 – 2012-04-10 15:35:05

相關問題