2010-05-18 3 views
5

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

<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> 

И это друпал код, я застрял на -

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

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

ответ

2

Если вы используете API-интерфейс Drupal 6.x и #type=>radios10 (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; 
    } 
+0

Спасибо за решение. – Andrew

+0

За исключением того, что идентификатор иногда не является надежным между средами. Например, если радиостанции генерируются из таксономических терминов, вы можете получить -tid- , которые не могут быть надежно использованы. –

1

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

+0

Я думаю, что я застрял в разметке и сразу написал соответствующий html-код. Но я не уверен, что drupal все равно увидит их как элементы управления. Не так ли? – Andrew

+0

Почему вы застряли с «разметкой»? Выполните форму с помощью Drupal и создайте ее с помощью CSS. Где проблема? – lazysoundsystem

+0

Проблема в том, что я не знал, что drupal генерирует id самостоятельно для каждого элемента, и единственный способ, который я мог бы записать, чтобы архивировать то, что я хочу, - выводить разметку как есть и назначать класс или стиль набора для каждого элемента , Но теперь это ясно; все, что мне нужно - определить стиль css с идентификаторами, созданными drupal. Спасибо, в любом случае. – Andrew