我已經編程添加了一個「標記」元素到Drupal表單。當它在頁面上呈現時,該元素將出現在提交按鈕的包裝中。 說明:應該出現在'field_school_name_value'元素和'distance'元素之間。我已經設定了每個元素的權重,希望這會強制佈局是正確的,但似乎沒有幫助。我究竟做錯了什麼?如何在「submit」元素的包裝中呈現Drupal表單「標記」元素?
<?php
function abq_misc_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'views_exposed_form') {
$state_select = array(
'#attributes' => array(
'style' => 'width:10em;',
),
'#default_value' => 'All',
'#multiple' => FALSE,
'#options' => array_merge(array('All' => 'State'), location_get_provinces()),
'#title' => NULL,
'#type' => 'select',
'#weight' => 0,
);
$form['province'] = $state_select;
$school = &$form['field_school_name_value'];
$school['#attributes'] = array(
'size' => 15,
);
$school['#weight'] = 1;
// THIS GUY
$form['divider'] = array(
'#type' => 'item',
'#markup' => '<div>–or–</div>',
'#weight' => 2,
);
$form['distance']['#weight'] = 3;
$search_distance = &$form['distance']['search_distance'];
$search_distance['#attributes'] = array(
'placeholder' => 'miles',
'size' => '5',
);
$search_distance['#prefix'] = 'Within';
$search_distance['#suffix'] = 'of';
unset($search_distance['#title']);
$search_distance['#weight'] = 0;
$postal_code = &$form['distance']['postal_code'];
unset($postal_code['#title']);
$postal_code['#attributes'] = array(
'placeholder' => 'Zip Code',
'size' => '5',
);
$postal_code['#weight'] = 1;
hide($form['distance']['search_units']);
$form['submit']['#weight'] = 4;
}
}
對不起,我的原始問題還不清楚。我希望它出現在'field_school_name_value'元素和'distance'元素之間。似乎如果我在這兩者的權重之間進行權衡,它應該可行......但事實並非如此。 – Xaq
@Xaq:不用擔心,我已經更新了上面的答案應該有所幫助。 – Clive
我實施了這兩個建議,但我仍然存在的問題。我需要將分隔線與其他表單元素放在同一水平線上,因爲它需要水平居中在其他元素的上下兩對之間({州和學校}和{距離和提交}。將分隔線作爲前綴將其放在元素之前,但仍然在包裝內,然後它的中心位置與它前綴的元素的寬度相同,這比整個表單的寬度要短。 – Xaq