web-dev-qa-db-ja.com

フォームAPIを使用してテーブルにデータを表示する方法

データを表の行に整理したい。 Forms APIを使用してそれを行うにはどうすればよいですか?

編集:

次の方法でデータを複数の行に表示します。

row1チェックボックスinfo1 textfield1 info2 textfield2 ....

....

rowN ....

行1 [ここに新しい行フィールドを追加]

...

行5

既存のレコードをキャンセルし、下部のフィールドに入力して新しいレコードを追加できる必要があります。

そして、私はこれで解決策を見つけます link または this で理解するのは本当に難しいです。

4
AgA

私が見つけた(小さなフォームで)これを行うsimplest方法は、レンダー配列の#prefix要素と#suffix要素を利用することです。次に例を示します。

$form['foo_fieldset'] = array(
  '#type' => 'fieldset',
  '#prefix' => '<table>',
  '#suffix' => '</table>',
  '#tree' => TRUE,
);
$form['foo_fieldset']['header'] = array(
  '#markup' => '<thead>
    <tr>
      <th>A checkbox</th>
      <th>A text input</th>
      <th>A text input</th>
    </tr>
  </thead>',
);

for ($i=0;$i<10;$i++) {
  $form['foo_fieldset']['row_' . $i] = array(
    '#prefix' => '<tr>',
    '#suffix' => '</tr>',
  );
  $form['foo_fieldset']['row_' . $i]['checkbox'] = array(
    '#type' => 'checkbox',
    '#prefix' => '<td>',
    '#suffix' => '</td>',
  );
  $form['foo_fieldset']['row_' . $i]['text_1'] = array(
    '#type' => 'textfield',
    '#prefix' => '<td>',
    '#suffix' => '</td>',
  );
  $form['foo_fieldset']['row_' . $i]['text_2'] = array(
    '#type' => 'textfield',
    '#prefix' => '<td>',
    '#suffix' => '</td>',
  );
}

これを実行するもう1つの方法(「正しい」方法と呼ばれることもあります)には、テーブルにフォームをレンダリングするテーマ設定関数を作成することが含まれます。このページを見て(テーブルソートオプションは無視してください)、その方法を確認してください。 http://coffeeshopped.com/2010/09/drupal-drag-and-drop-テーブルインカスタムモジュール

2