¿Cómo puedo agregar clases a una etiqueta de opción de formulario sin JS? En este momento en Form API puedo pasar una matriz con clave como esta
array(
'0' => 'option 0',
'1' => 'option 1',
)
y obtendré html como este
<option value="0">option 0</option>
<option value="1">option 1</option>
¿Hay alguna manera de hacer algo como esto?
array(
array(
'value' => 0,
'text' => 'option 0',
'class' => 'bob 0',
),
array(
'value' => 1,
'text' => 'option 1',
'class' => 'bob 1',
),
)
y luego obtener esto
<option value="0" class="bob 0">option 0</option>
<option value="1" class="bob 1">option 1</option>
Respuestas:
Desafortunadamente, esto no es muy fácil usando el Form API actualmente.
Hay un problema abierto para agregar esta funcionalidad (se remonta a 2008) que teóricamente te permitiría hacer algo como esto:
Pero desafortunadamente no hay más que parches fallidos adjuntos al problema en este momento.
La única forma en que se me ocurre hacerlo en este momento sería agregar una
#process
función al elemento de selección y agregar las clases a cada opción cuando se desglosan individualmente.fuente
Así que no pude hacer la opción totalmente flexible, pero aquí hay una manera de agregar clases a la
options
etiqueta en función del valor de la opción. Funciona pero anula latheme_select
función para usar mi propia versión deform_select_options
fuente
En realidad, hay una manera de anular
option
elementos individuales . Sin embargo, no estoy seguro de si funciona en Drupal 7.Aquí hay un código que funciona en Drupal 8. Podría valer la pena intentarlo.
Espero que ayude. ¡Salud! Alternativamente, elija una de las otras soluciones.
fuente