2011-07-17 86 views
7

我試圖自定義表單中生成的表單標籤。Symfony2:自定義表單集合中的表單標籤

我想顯示包含在特定遊戲星期的足球賽事,如下所示:

 
- Fixture 1 : Manchester United (0) - (1) Arsenal 
- Fixture 2 : Chelsea (2) - (1) Liverpool 
- ... 

我的形式顯示了所有燈具及相關成績,但所有標籤包含數據庫列名(score1,score2 )。我想替換球隊名稱。 所以,目前顯示:

 
- Fixture 1 : score1 (0) - (1) score2 
- Fixture 2 : score1 (2) - (1) score2 
- ... 

在控制器方面,我產生了一週形式(WeekType)。 $ week包含使用$ week-> getFixtures()的星期數據和燈具數據。

控制器/ DefaultController.php

$form = $this->createForm(new WeekType(), $week)->createView(); 

return array(
    'form' => $form, 
); 

窗體/ WeekType.php

class WeekType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('fixtures', 'collection', array(
      'type' => new FixtureType(), 
     )); 
    } 
} 

夾具形式增加了2個字段。我想將默認標籤替換爲團隊名稱。 但是我無法訪問這種形式的燈具數據。 $ options是NULL。我認爲$ options ['data']將包含燈具數據......但我錯了。

表/ FixtureType.php

class FixtureType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('score1', 'text', array('label' => **WHAT TO PUT HERE**)); 
     $builder->add('score2', 'text', array('label' => **WHAT TO PUT HERE**)); 
    } 
} 

我顯示使用此代碼的所有燈具,它的偉大工程。

index.html.twig

{% for fixture in week.form.fixtures %} 
     {{ form_widget(fixture) }} 
    {% endfor %} 

也許我可以直接定製我的標籤在index.html.twig,但我怎麼能得到燈具數據?

有人遇到此問題並解決它嗎?

回答

5

我找到了解決辦法!

在「index.html.twig」模板中,我迭代了表單元素。 這是一個錯誤。我只需要遍歷裝置並獲得相關的表單部件。

index.html。枝杈

{% for fixture in week.fixtures %} 
    fixture.HomeTeam.name 
    {{ form_widget(week.form.fixtures[loop.index0]) }} 
    fixture.AwayTeam.name 
{% endfor %} 

訣竅是直接從窗體部件陣列檢索表單元素:

week.form.fixtures[loop.index0]