公開されたビューのフィルターフォームにさらに要素を追加しようとしていますが、奇妙な問題が発生し、混乱を招いています。
カスタムモジュールでhook_form_alter呼び出しを使用して、新しい選択ドロップダウンを追加しています。これは、submit要素の一部としてレンダリングされることを除いて、うまく機能します。
function my_module_form_alter(&$form, &$form_state, $form_id) {
$form['test'] = array(
'#type' => 'select',
'#title' => 'New Filter',
'#options' => array('value 1', 'value 2')
);
}
レンダリングすると次のようになります。
<div class="views-exposed-form">
<div class="views-exposed-widgets clear-block">
<div class="views-exposed-widget views-widget-filter-field_node_status_value_many_to_one">
<label for="edit-node-status"> Approval Status </label>
<div class="views-widget">
<div class="form-item" id="edit-node-status-wrapper">
<select name="node_status" class="form-select" id="edit-node-status"><option value="All" selected="selected"><Any></option><option value="0">queued</option><option value="1">approved</option><option value="2">denied</option></select>
</div>
</div>
</div>
<!-- Select SHOULD go here -->
<div class="views-exposed-widget views-submit-button">
<input type="submit" id="edit-submit-wpg-content-bulk-admin" value="Apply" class="form-submit">
<div class="form-item" id="edit-test-wrapper">
<label for="edit-test">New Filter: </label>
<select name="test" class="form-select" id="edit-test"><option value="0">value 1</option><option value="1">value 2</option></select>
</div>
</div>
</div>
私がここで欠けているものを誰かが知っていますか?新しく追加された 'test'要素がsubmit要素ラッパー内にレンダリングされるのはなぜですか?
$form['#info']
でアイテムを宣言して、新しいフォームアイテムtest
をウィジェットに変換する必要があります
したがって、コードは次のようになります。
function my_module_form_alter(&$form, &$form_state, $form_id){
$form['test'] = array(
'#type' => 'select',
'#title' => 'New Filter',
'#options' => array('value 1', 'value 2')
);
$form['#info']['test'] = array(
'value' => 'test',
);
}