Symfony2:自定义表单集合中的表单元素ID

oco*_*rnu 5 symfony

使用表单集合时,表单元素ID由sf2自动构造

表格/ 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(),
        ));
    }
 }
Run Code Online (Sandbox Code Playgroud)

表格/ FixtureType.php

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

此代码生成以下表单元素:

<select id="MyBundle_fixtures_0_score1" />
<select id="MyBundle_fixtures_1_score1" />
Run Code Online (Sandbox Code Playgroud)

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

我想更改select标签的ID.例如,放置主键值(来自Model)而不是迭代索引.

<select id="MyBundle_fixtures_151_score1" />
<select id="MyBundle_fixtures_152_score1" />
Run Code Online (Sandbox Code Playgroud)

甚至:

<select id="MyBundle_fixtures_0_score1_151" />
<select id="MyBundle_fixtures_1_score1_152" />
Run Code Online (Sandbox Code Playgroud)

151,152是Fixture表(来自数据库)的主键值.

jul*_*bou 0

我看到有两种方法可以做到这一点:

  • 您可以自己修改传递给表单的集合的键,例如使用 id 而不是键创建一个新集合。

  • 您可以修改ResizeFormListener以使用 id 而不是键。