Drupalで複数行、複数列のモジュールデータをユーザーに提示する方法Drupal 6?APIドキュメントでは何も飛び出していません。Iいくつかの答えをググってみましたが、それらはすべて以前のバージョンに適用されるか、参照されていないデッドモジュールです。
フォームAPIのすぐに使える機能は基本的にkey :: value編集インターフェースであると私は思っていますか?それが事実である場合、これを行うための最新のよく管理されたモジュールはありますか、またはこのデータをユーザーに別の方法で表示する必要があります-おそらくビューですか?
編集挿入、セルデータの変更など、データを編集するためのフォーム機能をこのテーブルに設定したいのです。そのため、モジュールの設定に常駐させるのは当然だと思いましたが、そのテーブル機能は存在しないようです。
少しトリッキー
function your_form(){
$form = array();
...
$record_ids = array();
foreach($record_set as $record){
$record_ids[$record['id']] = ''; // Collect ids of your record as index
$form['column1'][$record['id']] = array('#value' => $record['field1']);
$form['column2'][$record['id']] = array('#value' => $record['field2']);
$form['column3'][$record['id']] = array('#value' => $record['field3']);
}
$form['select'] = array(
'#type' => 'checkboxes',
'#options' => $item_ids,
);
$form['#theme'] = 'render_your_form'; // Theme registry function to render this form
}
Theme_registryを定義する
function your_module_theme(){
...
$theme['render_your_form'] = array(
'arguments' => array('form' => array()),
);
return $theme;
}
次に、テーマハンドラーを記述します。
function theme_render_your_form($form=array()){
$head = array('Select', 'Title Col 1', 'Title Col 2','Title Col 3');
$rows = array();
foreach(element_children($form['select']) as $id){
$fields = array();
$fields[] = drupal_render($form['select'][$id]); //This will render a checkbox, omit if not required
$fields[] = drupal_render($form['column1'][$id]);
$fields[] = drupal_render($form['column2'][$id]);
$fields[] = drupal_render($form['column3'][$id]);
$rows[] = $fields;
}
$output = theme('table', $head, $rows); // Theme as table output
$output .= drupal_render($form); // Render rest of form components. (For D6)
$output .= drupal_render_children($form); // Render rest of form components (For D7)
return $output;
}