2012-08-06 111 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