2010-05-18 81 views
5

我有這組單選按鈕,其中每個單獨按鈕都具有通過樣式屬性設置的自己的位置。我想如何使用drupal form 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> 

這是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'), 

我知道#類型=>無線電的存在。但是,在這方面,我不知道如何將所有單選按鈕組合在一起。如果我爲它們全部使用相同的數組鍵,它們會相互碰撞。如果我不這樣做,他們不會被視爲同一組的一部分。我提前謝謝你。

回答

2

如果你使用Drupal的6.x的形式API和#type=>radioshttp://api.drupal.org/api/function/theme_radios/6)每個無線電元件將有其獨特的ID,你可以用它來申請適當的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 2010-05-19 03:33:48

+0

除環境之外的ID有時不可靠。例如,如果收音機是根據分類術語生成的,則可以獲得不能可靠地使用的 -tid- 。 – 2012-11-05 12:19:31

1

答案是將CSS與您已有的html結合使用。它看起來像你只是想改變單選按鈕的顯示爲'內聯'10px的邊距,你可以做。 (如果你沒有打破無線電成單獨的元素一個字段內,他們會不再互相交流。)

+0

我想我被標記類型卡住,並直接寫入相應的html代碼。但我不確定drupal是否仍將它們視爲控件。會嗎? – Andrew 2010-05-18 14:06:26

+0

你爲什麼堅持'標記類型'?使用Drupal輸出表單並使用CSS進行設置。問題在哪裏? – lazysoundsystem 2010-05-18 21:59:46

+0

問題是,我不知道drupal自己爲每個元素生成id,並且,我可以想到的唯一方法是將其標記爲我想要的結果,按原樣輸出標記,併爲每個元素分配class或set樣式。但是,現在很明顯;我需要的是 - 用drupal生成的id定義css風格。不管怎麼說,還是要謝謝你。 – Andrew 2010-05-19 03:38:43