2012-08-06 90 views
1

我正在使用Symfony 2.0.14,我想在我的表单模板中显示默认值。symfony 2表单显示默认值

那么一个FormType绑定到一个实体,当我想添加额外的字段,我知道选项property_path = false允许添加非实体字段,对不对?

当我在相反的情况下,我想设置一个没有表单字段的实体字段。 好吧,我只需要给“createForm”一个默认的实体。

Howewver如何在我的模板窗体中渲染它?


控制器代码:

public function newAction(Request $request) 
{ 
    $game = new Game(); 

    $local = new Role(); 
    $visitor = new Role(); 
    $local->setType('LOCAL'); 
    $visitor->setType('VISITOR'); 
    $game->addRole($local); 
    $game->addRole($visitor); 

    $form = $this->createForm(new GameType(), $game); 

游戏类型代码:

public function buildForm(FormBuilder $builder, array $options){ 
    $builder->add('teams', 'collection', array('type' => new RoleType())); 
} 

角色类型代码:

public function buildForm(FormBuilder $builder, array $options){ 
    $builder->add('type', 'text'); // <= I would like read only for end-User 
    $builder->add('score', 'integer'); 

形式模板:

{% for role in form.teams %} 
     <li> 
      <div class="role-team"> 
       {{ role.type }} {# WRONG way, how to do ? #} 
       {{ form_row(role.score) }} 
      </div> 
     </li> 
{% endfor %} 

回答

0

如果你想只是为了显示你的实体字段值(不整个实体传递给视图),您可以用打印:

{{ form.vars.value.type }} 

(假设你的角色的实体有类型属性)。

编辑:我意识到你在循环中。尝试找出正确的属性路径使用:

{% for role in form.teams %} 
    {% debug role %} 
{% endfor %} 
+0

感谢第一个是好的! '{{role.vars.value.type}}'做角色也是FormView的工作。 提示,启用调试我加入config.yml: '服务: twig.extension.debug: 类:Twig_Extensions_Extension_Debug 标签: - {名称: 'twig.extension'}' – Simon 2012-08-07 05:59:33

+0

@Boloux你欢迎。考虑接受答案,谢谢! – gremo 2012-08-07 11:44:55