2012-01-23 7 views
5

Tengo 4 botones de opción, y me gustaría agregar una descripción a cada uno de ellos. No solo para el grupo de botones de radio.Agregue la descripción a cada botón de radio usando los formularios drupal 7 api

Este es mi código:

 $form['bedrijfsfiche'] = array(
     '#type' => 'radios', 
     '#title' => t('Keuze bedrijfsfiche'), 
     '#options' => array('basis' => t('Basisbedrijfsfiche: €125'), 'Uitgebreid' =>   t('Uitgebreide bedrijfsfiche: €250'), 'gratis' => t('Gratis bedrijfsfiche'), 'contact' => t('Contacteer mij telefonisch voor meer uitleg')), 
     '#access' => $admin, 
    ); 

Me parece que no puede lograr esto, cualquier ayuda?

Respuesta

8

De forma predeterminada, los botones de radio individuales no tienen una descripción cuando forman parte de las radios, pero usted debería poder agregar uno usted mismo, según lo que veo en el código.

$descriptions = array(...); // descriptions, indexed by key 

    foreach ($form['bedrijfsfiche']['#options'] as $key => $label) { 
    $form['bedrijfsfiche'][$key]['#description'] = $descriptions[$key]; 
    } 

Más tarde, cuando los botones de radio se expanden a botones separados, que hará que los elementos individuales de radio a estos lugares de matriz [$] clave, pero lo hace añadiendo, por lo que cualquier cosa allí de antemano se conserva. Eso significa que puede agregar las descripciones, y usted mismo y se quedarán en los botones de opción reales.

+0

Esto funciona para mí! ¡GRACIAS! –

3

Debe agregar una clave adicional a la matriz de formularios para cada opción de radio. La clave de la matriz de formularios debe ser la clave de la opción disponible de #options, y el valor debe ser una matriz que contenga la clave de #description y la cadena que desea proporcionar.

Para un ejemplo de campo, las opciones de radio se almacenan en $ form ['field_foo'] [$ lang] ['# options']. Si el contenido de la matriz #options es ('buyer' => 'Buyer', 'seller' => 'Seller') entonces agregamos descripciones de la siguiente manera.

// Since users and forms do not have language, use none. 
$lang = LANGUAGE_NONE; 

// Add descriptions to the radio buttons. 
$form['field_foo'][$lang]['buyer'] = array(
    '#description' => t('Are you a sommelier, wine director, or beverage manager?'), 
); 
$form['field_foo'][$lang]['seller'] = array(
    '#description' => t('Are you a wine rep for a distributor, wholesaler, importer, or for a specific label?'), 
); 

Es un poco extraño, pero funciona. :)

Cuestiones relacionadas