Mi proyecto requiere que reconstruya la funcionalidad de un sistema grande mientras conserva la estructura de la base de datos (por razones de facturación histórica). Empecé con Symfony 2.0.xy comencé el proceso de actualización a Symfony 2.1.2.Acceder a elecciones específicas directamente desde el elemento ChoiceType en Twig
Anteriormente, podía acceder directamente a las opciones individuales de un grupo de radio (múltiple = falso, expandido = verdadero) en Twig utilizando la notación de puntos. Por ejemplo, en mi forma he definido el elemento parecido a esto:
$builder->add('settings_group', 'choice', array(
'choices' => array(
'existing' => 'A pre-existing setting group',
'override' => 'Specify an override instead'
),
'multiple' => false, 'expanded' => true,
'property_path' => false
)
);
En mi plantilla Twig, mi margen de beneficio fue de esta manera:
<ul>
<li>
{{ form_widget(form.settings_group.existing) }}
[ .. dropdown ..]
</li>
<li>
{{ form_widget(form.settings_group.override) }}
[ .. text input .. ]
</li>
</ul>
Funcionó a la perfección para lo que tenía que hacer, como los botones de opción "existente" o "anular" determinarían qué campos se conservaron y cuáles se restablecieron cuando se guardó la entidad. Específicamente, mi problema surge porque quiero separar manualmente los botones de radio y enviar varios otros campos de formulario antes del siguiente botón de radio. Es un patrón recurrente en varias formas en este sistema, basado en la funcionalidad y base de datos existentes.
Después de actualizar a Symfony 2.1, esto ya no es posible y me sale un error:
Method "existing" for object "Symfony\Component\Form\FormView" does not exist
He intentado varias posibilidades incluyendo .get() y la iteración en .choices() [que termina dándome objetos ChoiceView que luego no puedo enviar usando form_widget()]. Intenté crear un solo botón de encapsulación de tipo de letra personalizado más los campos de configuración asociados, pero debido a la forma en que se crean los nombres de los elementos, no puedo permitir que sean mutuamente exclusivos. También intenté hacer que un tipo más complejo representara ambas opciones y campos asociados, pero una vez más no pude acceder y presentar una opción específica en la plantilla del tipo.
Idealmente, espero algo en la API que simplemente haya pasado por alto y que pueda encontrar/reemplazar y ponerlo en funcionamiento. De lo contrario, se agradecerían consejos sobre (o un enlace a) un enfoque más amigable con Symfony para hacer esto.
Hola, tenía esperanzas. Está cerca, pero no hay cigarro. Me dicen: 'Key" existing "en el objeto (con ArrayAccess) del tipo" Symfony \ Component \ Form \ FormView "no existe ...' –
Una idea: ¿estás usando Twig's {{dump ()} } para imprimir el contenido de los objetos, como para depurar su código? Voy a echar un vistazo más adelante a lo que está tratando de lograr. –