2011-08-07 14 views
5

Cuando se utiliza colecciones de formulario, IDs forma de elementos se construyen automáticamente por SF2Symfony2: personalizar los ID de elemento de formulario en colecciones de formulario

Form/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(), 
     )); 
    } 
} 

Form/FixtureType.php

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

Este código produce los siguientes elementos de formulario:

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

0, 1 ... son solo el índice de iteración actual.

Quiero cambiar los identificadores de las etiquetas de selección. Por ejemplo, poner valores de clave primaria (de Modelo) en lugar de índice de iteración.

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

o incluso:

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

151, 152 son el valor de clave principal de la tabla Fixture (de base de datos).

Respuesta

0

Veo dos maneras de hacer esto:

  • Puede modificar las claves de las colecciones pasaron a la forma a sí mismo, por ejemplo, crear una nueva colección con los identificadores en lugar de llaves.

  • Puede modificar el ResizeFormListener para usar identificadores en lugar de claves.

+0

Su última propuesta aún se encuentra en [discusión] (https://github.com/symfony/symfony/pull/1461). En cuanto a su primera propuesta, no la entiendo. ¿Cómo puedo modificar las claves de colecciones pasadas al formulario? – ocornu

Cuestiones relacionadas