2011-08-07 43 views
5

當使用形式集合,形式元件ID是自動由SF2構成Symfony2中:自主的形式元素ID在形式集合

窗體/ WeekType.php

class WeekType extends AbstractType 
{ 
    public function getName() 
    { 
     return "MyBundle"; 
    } 

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

窗體/ FixtureType.php

class FixtureType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('score1', 'text'); 
    } 
} 

此代碼生成以下表單元素:

<select id="MyBundle_fixtures_0_score1" /> 
<select id="MyBundle_fixtures_1_score1" /> 

0,1 ...只是當前的迭代索引。

我想更改選擇標籤的ID。例如,將主鍵值(來自模型)而不是迭代索引。

<select id="MyBundle_fixtures_151_score1" /> 
<select id="MyBundle_fixtures_152_score1" /> 

甚至:

<select id="MyBundle_fixtures_0_score1_151" /> 
<select id="MyBundle_fixtures_1_score1_152" /> 

151,152從夾具表(來自數據庫)的主鍵值。

回答

0

我看到兩種方法可以做到這一點:

  • 您可以修改自己傳遞給表單集合的鍵,例如創建一個ID而不是鍵一個新的集合。

  • 您可以修改ResizeFormListener以使用ID而不是密鑰。

+0

你最後的提案仍在[討論](https://github.com/symfony/symfony/pull/1461)。 關於你的第一個建議,我不明白。我如何修改傳遞給表單的集合鍵? – ocornu