De forma predeterminada, el marcado HTML para botones de radio se ve así (Drupal 7):
<div class="form-item form-type-radio form-item-SOME_ID">
<input id="edit-SOME_ID" class="form-radio" type="radio" value="SOME_VALUE" name="SOME_NAME" />
<label class="option" for="edit-bla-bla">MY LABEL</label>
</div>
Necesito cambiar / agregar algunas clases de CSS en el exterior <div>
O agregar un contenedor <div>
. ¿Cómo puedo hacer eso?
Respuestas:
Si está definiendo el formulario usted mismo, puede ajustar un elemento con HTML utilizando las propiedades
#prefix
y#suffix
:Si desea agregar una clase al contenedor existente, puede hacerlo utilizando la
#attributes
propiedad:Si no está definiendo el formulario usted mismo, puede usar la misma lógica e implementar a
hook_form_alter()
para cambiar el formulario existente:Tenga en cuenta que cuando utilice el
hook_form_alter()
método, debe agregarlo a la matriz de clases existente para no anular ninguna clase que se haya configurado previamente.fuente
Puede hacer lo anterior (prefijo / sufijo) en los elementos de la matriz de opciones y luego obtendrá lo que desee alrededor de cada elemento.
fuente
Pude lograr esto después de mucho trabajo y probando cada método publicado usando un consejo inteligente que encontré en Internet en otro sitio: http://e9p.net/altering-individual-radio-or-checkbox-items-drupal- 7-fapi , para
#after_build
poder modificar las radios individuales del elemento de forma una vez que son una matriz de renderizado de drupal.Quería cada radio envuelta en un contenedor con una clase, así que usé
#prefix
y#suffix
para hacer eso:ejemplo de uso:
Sin embargo, si solo desea que el
input
elemento tenga la clase, deberá implementar la solución que publiqué en drupal.org en https://api.drupal.org/comment/60197#comment-60197 para permitir que se usen los #options_attributes correctamente para opciones individuales. Volver a publicar el código aquí:ejemplo de uso:
fuente
La única forma en que he podido lograr esto es creando un elemento de formulario diferente para cada radio, emparejando manualmente los nombres usando #name y estableciendo manualmente un valor usando #attributes. (#value no funciona por alguna razón).
Por ejemplo:
Esto agregará un contenedor y una clase a los botones de radio individuales en lugar del grupo de radio como lo hace la respuesta actualmente aceptada.
fuente