2010-05-18 6 views
5

Tôi có nhóm nút radio này trong đó mỗi nút riêng lẻ có vị trí riêng được đặt thông qua thuộc tính kiểu. Tôi muốn làm thế nào tôi có thể lưu trữ giống nhau bằng cách sử dụng api hình thức drupal. Tôi tìm thấy cách để tạo kiểu như toàn bộ, nhưng không phải là kiểm soát cá nhân trong nhóm. Đây là cách html của tôi đang trông thấy quen quen -Tạo các nút radio riêng lẻ ở dạng 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> 

Và đây là đoạn code drupal Tôi đang mắc kẹt tại -

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

Tôi nhận thức đượC# type => Radio tồn tại. Tuy nhiên, tôi không biết làm thế nào để nhóm tất cả các nút radio của tôi với nhau trong lĩnh vực này. Nếu tôi sử dụng cùng một khóa mảng cho tất cả chúng, chúng sẽ va chạm lẫn nhau. Nếu không, chúng không được xem như là một phần của cùng một nhóm. Tôi cảm ơn bạn trước.

Trả lời

2

Nếu bạn đang sử dụng Drupal 6.x Form API và #type=>radios (http://api.drupal.org/api/function/theme_radios/6) mỗi phần tử radio sẽ có id duy nhất mà bạn có thể sử dụng để áp dụng CSS phù hợp.

Ví dụ bạn cung cấp

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

nên đánh dấu đầu ra như vậy:

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

Áp dụng CSS sau đây và bạn sẽ được thiết lập.

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

Cảm ơn giải pháp. – Andrew

+0

Ngoại trừ một ID đôi khi không đáng tin cậy giữa các môi trường. Ví dụ: nếu radio được tạo từ các thuật ngữ phân loại, bạn có thể nhận được -tid- không thể sử dụng một cách đáng tin cậy. –

1

Câu trả lời là sử dụng CSS với html mà bạn đã có. Có vẻ như bạn chỉ muốn thay đổi hiển thị của nút radio thành 'nội tuyến' với lề 10px, bạn có thể thực hiện điều này. (Và nếu bạn đã chia các radio thành các phần tử riêng biệt trong một fieldset, chúng sẽ không còn tương tác với nhau nữa.)

+0

Tôi nghĩ mình bị kẹt với loại đánh dấu và viết mã html tương ứng trực tiếp. Nhưng tôi không chắc chắn nếu drupal vẫn sẽ xem chúng như là điều khiển. Phải không? – Andrew

+0

Tại sao bạn bị mắc kẹt với 'loại đánh dấu'? Xuất biểu mẫu với Drupal và tạo kiểu cho nó bằng CSS. Vấn đề ở đâu? – lazysoundsystem

+0

Vấn đề là tôi không biết drupal tự tạo id cho mỗi phần tử và cách duy nhất tôi có thể nghĩ đến để lưu trữ những gì tôi muốn là đánh dấu đầu ra như nó được gán và gán lớp hoặc đặt kiểu cho mỗi phần tử . Nhưng, bây giờ nó rõ ràng; tất cả những gì tôi cần là - xác định kiểu css với các id được tạo bởi drupal. Dù sao cũng cảm ơn bạn. – Andrew