使用drupal 7 forms api为每个单选按钮添加说明

时间:2012-01-23 09:34:55

标签: drupal-7

我有4个单选按钮,我想为每个按钮添加一个描述。不仅仅是单选按钮组。

这是我的代码:

     $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,
    );

我似乎无法完成任何帮助?

2 个答案:

答案 0 :(得分:8)

默认情况下,单独的单选按钮在部分无线电时没有给出说明,但您应该能够根据我在代码中看到的内容自行添加一个。

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

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

稍后,当单选按钮扩展为单独的按钮时,它将为这些数组[$ key]位置创建单独的无线电元素,但它通过追加来实现,因此事先保留任何内容。这意味着你可以添加描述,你自己也可以在实际的单选按钮中添加。

答案 1 :(得分:3)

您需要为每个无线电选项的表单数组添加一个附加键。表单数组的键应该是#options中可用选项的键,值应该是一个包含#description键和你想要提供的字符串的数组。

对于字段示例,无线电选项存储在$ form ['field_foo'] [$ lang] ['#options']中。如果#options数组的内容是('buyer'=>'买方','卖方'=&'卖方'),那么我们按如下方式添加说明。

// 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?'),
);

这有点奇怪,但它确实有效。 :)