2012-09-03 11 views
19

En Symfony2, el componente html select se representa como un objeto ChoiceType, que se utiliza de hecho también para checkboxes y radiobuttons.Seleccionar con optgroup en Symfony 2.0

puede alguien realmente sabe cómo hacer que un selecto con la opción optgroup en Symfony2?

Para mayor abundamiento, aquí me informan de un ejemplo de un seleccionar con el etiqueta optgroup (ejemplo de w3cschools):

<select> 
    <optgroup label="Swedish Cars"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    </optgroup> 
    <optgroup label="German Cars"> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
    </optgroup> 
</select> 

Por otra parte, el aviso de que hay un puesto similar here, pero las respuestas no son convincentes.

+0

Parece ser fijado en sf2.1 ([véase el doc] (http://symfony.com/doc/master/reference/forms/types/entity.html#group- por)). ¿Estás usando sf2.0 o sf2.1? – j0k

+0

SF2.0! ¡Pero SF2.1 está en RC2 ahora! Entonces, es mejor esperar la primera versión estable 2.1 ... ¿Debo cancelar la pregunta? – JeanValjean

+0

No cierre, puede haber una solución para tener optgroup en sf2.0, pero no lo sé. – j0k

Respuesta

34

hacer esto:

$car_choices = array(
    'Swedish Cars' => array(
     'volvo' => 'Volvo', 
     'saab' => 'Saab', 
    ), 
    'German Cars' => array(
     'mercedes' => 'Mercedes', 
     'audi' => 'Audi' 
    ) 
); 

$form = $this->createFormBuilder() 
     ->add('car', 'choice', array(
      'label' => 'Choose your car', 
      'choices' => $car_choices, 
      )) 
     ->getForm(); 

Obras de Symfony 2.0.x

+1

¡Funciona como un encanto en mi aplicación Symfony2.0.17! Muchas gracias ... – JeanValjean

+0

Mucho me gusta en Symfony 1.x: array of array. – j0k

+0

¡Perfecto! Gran alternativa para usar las entidades. –

16

Depende de cómo se defina su entidad y cómo agrupar su entidad. Suponiendo que la agrupación se realiza dado un parámetro en su objeto, digamos "marca". Que puede hacer:

$builder->add('cars', null, array(
    'group_by'=> 'brand' 
)); 
+0

¿qué hay de la auto referencia? como Categoría y Subcategoría? –

+0

@Daskul lo siento, no entiendo lo que quieres decir. – Sylvain

+0

relación autorreferencial. usted tiene una entidad que tiene referencia al mismo tipo de entidad que su padre. Me gusta en la categoría. Quiero todas mis categorías en una tabla de base de datos pero todavía puedo hacer jerarquías. Ex. Crearé categoría de Computadora, Computadora Portátil, Escritorio pero quiero Computadora Portátil y Escritorio bajo la categoría COmputer –

Cuestiones relacionadas