2012-05-27 9 views
9

Pude hacer esto con Javascript, pero me preguntaba si podría agregar una clase css a opciones de formulario específicas de Symfony2 (no el campo de elección en sí, sino las elecciones individuales).¿Cómo puedo agregar clases de CSS a opciones de formulario de Symfony2 específicas?

Por ejemplo, deseo aplicar diferentes estilos de CSS a etiquetas de 'opciones' individuales dentro de 'seleccionar'. Solo pude encontrar una forma de agregar una clase a la etiqueta.

Gracias de antemano.

Respuesta

4

Puede anular el diseño de widgets específicos en su formulario, lo que significa que puede anular la forma en que se selecciona y poner código personalizado para verificar cuál es el valor de la opción y generar su clase personalizada allí.

es necesario aplicar un diseño personalizado a su forma, al igual que

{% form_theme form 'form_theme.html.twig' %} 

A continuación, en el interior del archivo de diseño se debe redefinir el campo específico de esa forma específica (a menos que, por supuesto, que quiere editar el choice_widget directamente, en cuyo caso todos los campos que usan elección tendrán la funcionalidad).

Para hacer eso tienes que copiar el widget, por lo choice_widget, a continuación, lo nombra [_formName_fieldName_widget]

Así que si su nombre del formulario fue eventos y su nombre era requireTickets campo, sería _events_requireTickets_widget

+0

Gracias, no necesitaba el nombre de la clase para aplicar estilos específicos, pero algunos plugins de jQuery dependían de los campos

10

pienso sólo tiene que hacer:

{{ form_widget(form.name, { 'attr' : { 'class' : 'myClass' } }) }} 

... here como se ha explicado, sin crear su propio estilo formulario.

+0

... o simplemente envuelve form_widget con una etiqueta div y le asigna un atributo. –

+6

Esto agregará la etiqueta a la selección y posiblemente a las opciones, pero no le permitirá aplicar clases a opciones individuales. – CriticalImpact

+0

@CriticalImpact tiene razón, por lo que OP debería crear un estilo personalizado. – gremo

4

Las respuestas que ya se proporcionaron son muy buenas, y creo que @ CriticalImpact es la más flexible. Pero yo sólo quería mencionar que si usted está utilizando una clase de formulario, también se puede añadir atributos adicionales para el campo a través de la definición constructor de la forma en sí:

class SomeType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('someField', "text", array("attr" => array("class" => "someCssClass"))) 
      ->add("save", "submit"); 
    } 
} 

he encontrado este útil para las formas básicas, porque todavía le permite hacer una llamada simple {{ form(someForm) }} en su archivo Twig.

(Tenga en cuenta que esta solución todavía tiene el inconveniente de que @CriticalImpact mencionó above)

0

añadir atributos como estilos CSS a las elecciones individuales en la actualidad se pueden conseguir con choice_attr, por ejemplo:

use Symfony\Component\Form\Extension\Core\Type\ChoiceType; 
// ... 

$builder->add('attending', ChoiceType::class, array(
    'choices' => array(
     'Yes' => true, 
     'No' => false, 
     'Maybe' => null, 
    ), 
    'choice_attr' => function($val, $key, $index) { 
     // adds a class like attending_yes, attending_no, etc 
     return ['class' => 'attending_'.strtolower($key)]; 
    }, 
)); 
Cuestiones relacionadas