2010-05-18 33 views
5

Ho questo gruppo di pulsanti di opzione in cui ogni singolo pulsante ha la propria posizione impostata tramite l'attributo style. Mi piacerebbe come posso archiviare lo stesso usando drupal form api. Ho trovato come stile nello stesso modo, ma non come controllo individuale all'interno del gruppo. Ecco come il mio codice HTML simili -Stile pulsanti radio individuali in forma 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> 

E questo è il codice di Drupal sono bloccato a -

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

io sappia # type => Radio esistenza. Tuttavia, non so come raggruppare tutti i miei pulsanti di opzione insieme a questo proposito. Se io uso la stessa chiave di array per tutti loro, si scontreranno a vicenda. Se non lo faccio, non sono visti come parte dello stesso gruppo. Ti ringrazio anticipatamente.

risposta

2

Se stai usando Drupal 6.x Form API e #type=>radios (http://api.drupal.org/api/function/theme_radios/6) ogni elemento radio avrà il suo ID univoco che è possibile utilizzare per applicare CSS appropriato.

L'esempio è fornito

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

dovrebbe markup uscita in questo modo:

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

Applicare il seguente CSS e si dovrebbe essere impostato.

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

Grazie per la soluzione. – Andrew

+0

Tranne che un ID a volte non è affidabile tra gli ambienti. Ad esempio, se le radio sono generate da termini di tassonomia, è possibile ottenere -tid- che non può essere utilizzato in modo affidabile. –

1

La risposta è usare CSS con l'html che hai già. Sembra che tu voglia semplicemente cambiare il display dei pulsanti radio in 'inline' con margini di 10px, cosa che puoi fare. (E se interrompessi le radio in elementi separati all'interno di un fieldset, non interagirebbero più tra loro.)

+0

Penso di essere bloccato con il tipo di markup e di scrivere direttamente il codice html corrispondente. Ma non sono sicuro che Drupal le vedrebbe ancora come controlli. Lo farebbe? – Andrew

+0

Perché sei bloccato con "tipo markup"? Esegui il modulo con Drupal e modificalo con i CSS. Dov'è il problema? – lazysoundsystem

+0

Il problema è che non sapevo drupal generare id da solo per ogni elemento e, l'unico modo in cui potevo pensare di archiviare ciò che voglio è, generare markup così com'è e assegnare classe o stile per ogni elemento . Ma ora è chiaro; tutto ciò di cui ho bisogno è - definire lo stile css con gli id ​​generati da drupal. Grazie comunque. – Andrew

Problemi correlati