2010-05-18 7 views
5

Mam tę grupę przycisków radiowych, w których każdy z poszczególnych przycisków ma własną pozycję ustawioną za pomocą atrybutu stylu. Chciałbym, jak mogę zarchiwizować to samo, używając interfejsu API formularza drupal. Znalazłem sposób na stylizację całościową, ale nie jako indywidualną kontrolę w grupie. Oto jak mój kod html wyglądać -Stylizacja pojedynczych przycisków radiowych w postaci drupala

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

I to jest kod Drupal Utknąłem w -

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

Jestem świadomy # type => egzystencji radiowej. Jednak nie wiem, jak pogrupować wszystkie moje przyciski opcji w tym zakresie. Jeśli użyję tego samego klucza tablicy dla wszystkich z nich, zderzają się ze sobą. Jeśli nie, nie są postrzegane jako część tej samej grupy. Z góry dziękuję.

Odpowiedz

2

Jeśli używasz interfejsu API Drupal 6.x Form i #type=>radios (http://api.drupal.org/api/function/theme_radios/6) każdy element radiowy będzie miał swój unikalny identyfikator, którego możesz użyć do zastosowania właściwego CSS.

Przykład podałeś

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

powinny znaczników wyjściową tak:

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

Zastosuj następującą CSS i powinien być ustawiony.

#base-location-0-wrapper, 
    #base-location-1-wrapper, 
    #base-location-2-wrapper { 
    display:inline; 
    margin-left:50px; 
    } 
+0

Dzięki za rozwiązanie. – Andrew

+0

Poza tym, że identyfikator czasami nie jest wiarygodny między środowiskami. Na przykład, jeśli radiotelefony są generowane z terminów taksonomicznych, można uzyskać -tid- , której nie można w sposób niezawodny wykorzystać. –

1

Odpowiedź brzmi: używaj CSS z już posiadanym html. Wygląda na to, że chcesz zmienić wyświetlanie przycisków radiowych na "wbudowane" z marginesami 10 pikseli, co możesz zrobić. (A jeśli rozdzielisz radia na osobne elementy w zestawie obiektowym, nie będą już ze sobą współdziałać).

+0

Myślę, że utknąłem z typem znaczników i bezpośrednio zapisuję odpowiedni kod HTML. Ale nie jestem pewien, czy drupal nadal postrzegałby je jako kontrole. Czy to prawda? – Andrew

+0

Dlaczego utknąłeś z "typem znaczników"? Wypisz formularz za pomocą Drupala i nadaj mu styl CSS. Gdzie jest problem? – lazysoundsystem

+0

Problem polega na tym, że nie wiedziałem, że drupal generuje id dla każdego elementu i jedynym sposobem, w jaki mógłbym zarchiwizować to, czego chcę, jest generowanie znaczników w postaci, w jakiej jest, i przypisanie klasy lub zestawu stylów dla każdego elementu . Ale teraz jest jasne; wszystko, czego potrzebuję, to zdefiniowanie stylu css z generowanymi przez drupala identyfikatorami. Dzięki i tak. – Andrew