theming – Agregar clases para formar el elemento de opción de selección

Pregunta:

¿Cómo puedo agregar clases a una etiqueta de opción de formulario sin JS? Por el 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 obtén esto

<option value="0" class="bob 0">option 0</option>
<option value="1" class="bob 1">option 1</option>

Respuesta:

Desafortunadamente, esto no es muy fácil usando la API de formularios actualmente.

Hay un problema abierto para agregar esta funcionalidad (se remonta a 2008) que teóricamente le permitiría hacer algo como esto:

$form['optiontest'] = array(
  '#type' => 'select',
  '#title' => t('Option test'),
  '#options' => array(
    array(
      '#return_value' => 0,
      '#value' => t('First option'),
      '#attributes' => array('class' => 'first', 'title' => t('First option')),
    ),
    array(
      '#value' => t('Option group'),
      '#attributes' => array('class' => 'group', 'title' => t('This is an optgroup')),
      '#options' => array(
        array('#return_value' => 2, '#value' => t('1st sub-option')),
        array('#return_value' => 4, '#value' => t('2nd sub-option')),
      ),
    ),
  ),
);

Pero, lamentablemente, no hay más que parches fallidos adjuntos al problema en este momento.

La única forma en que puedo pensar en hacerlo en este momento sería agregar una función #process al elemento de selección y agregar la (s) clase (s) a cada opción cuando se desglosan individualmente.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım