Моделирование отдельных переключателей в форме drupal

У меня есть эта группа переключателей, в которых каждая отдельная кнопка имеет его собственного набора положения через атрибут стиля. Я хотел бы к тому, как я могу заархивировать то же при помощи API формы drupal. Я нашел, как разработать как целый, но, не как отдельное управление в группе. Вот то, как мой HTML-код похож -

<input type="radio" name="base_location" checked="checked" value="0" style="margin-left:70px;float:left;"/><span style="float:left;">District</span>
  <input type="radio" name="base_location" value="1" style="margin-left:50px;float:left;"/><span style="float:left;">MRT</span>
  <input type="radio" name="base_location" value="2" style="margin-left:60px;float:left;"/><span style="float:left;">Address</span>

И это - код drupal, я упорно продолжен -

$form['base_location'] = array(
   '#type' => 'radios',
   '#title' => t('base location'),
   '#default_value' => variable_get('search_type', 0),
   '#options' => array(
'0'=>t('District'),
'1'=>t('MRT'),
'2'=>t('Address')),
   '#description' => t('base location'),

Я знаю о #type => радио-существование. Однако я не знаю, как собрать в группу все мои переключатели в этом отношении. Если бы я использую тот же ключ массива для всех них, они столкнулись бы друг друга. Если я не делаю, они не рассматриваются как часть той же группы. Я заранее благодарю Вас.

5
задан skaffman 17 March 2012 в 17:22
поделиться

2 ответа

Если вы используете Drupal 6.x Form API и # type => радио ( http://api.drupal.org/api/function/theme_radios/6 ) каждый радиоэлемент будет иметь свой уникальный идентификатор, который вы можете использовать чтобы применить правильный CSS.

Приведенный вами пример

$form['base_location'] = array(
  '#type' => 'radios',
  '#title' => t('base location'),
  '#default_value' => variable_get('search_type', 0),
  '#options' => array(
  '0'=>t('District'),
  '1'=>t('MRT'),
  '2'=>t('Address')),
  '#description' => t('base location'),
);

должен выводить разметку следующим образом:

<div id="base-location-0-wrapper" class="form-item">
  <label for="base-location-0" class="option"><input type="radio" class="form-radio" value="0" name="base_location" id="base-location-0"> District</label>
</div>
<div id="base-location-1-wrapper" class="form-item">
  <label for="base-location-1" class="option"><input type="radio" class="form-radio" value="1" name="base_location" id="base-location-1"> MRT</label>
</div>
<div id="base-location-2-wrapper" class="form-item">
  <label for="base-location-2" class="option"><input type="radio" class="form-radio" value="2" name="base_location" id="base-location-2"> Address</label>
</div>

Примените следующий CSS, и все должно быть настроено.

  #base-location-0-wrapper,
  #base-location-1-wrapper,
  #base-location-2-wrapper {
    display:inline;
    margin-left:50px;
  }
3
ответ дан 15 December 2019 в 00:52
поделиться

Ответ заключается в использовании CSS с html, который у вас уже есть. Похоже, что вы просто хотите изменить отображение радиокнопок на "inline" с полями 10px, что вы можете сделать. (А если вы разобьете радиокнопки на отдельные элементы внутри набора полей, они больше не будут взаимодействовать друг с другом)

.
1
ответ дан 15 December 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: