フォーム

~ AJAX Forms in Drupal 7 和訳 ~

AJAXフォームとは

Drupal 7 における AJAXフォームとは、ページをリロードすることなく動的に変化させるようなフォームのことで、簡単に生成、操作することが出来ます。これは Drupal のフォームAPI のシンプルな拡張機能です。

コア: 
Drupal7
~ drupal_add_tabledrag 和訳 ~
7 common.inc

drupal_add_tabledrag($table_id, $action, $relationship, $group, $subgroup = NULL, $source = NULL, $hidden = TRUE, $limit = 0)

テーブル(表)要素にテーブルドラッグの javascript(マウスドラッグにより列の並び替えを行うスクリプト)を追加します。

コア: 
Drupal7

特定のウィジェットタイプを操作するには、hook_field_widget_WIDGET_TYPE_form_alter() を使います。WIDGET_TYPE のところを、操作したいウィジェットタイプに置き換えて使います。

ウィジェットタイプの名前が分からないときは、操作したいウィジェットを含むフォームが存在するページで、hook_field_widget_form_alter() をコールしてみて、第1引数を $element とすると、$element['instance']['widget']['type'] にあります。

コア: 
Drupal7

Drupal7のインストールのデフォルトでは、Listモジュール(コアモジュール)が無効になっているので、これを有効にする。

そうするとフィールドタイプ(保存データ形式)で List(float) と List(integer)、リスト(テキスト)が選択できるようになるので、いづれかを選択すると、ウィジェット(データ編集用フォーム要素)に選択リスト、チェックボックス/ラジオボタンを設定できるようになる。

整数、浮動小数点数値といった数値タイプのフィールドを追加したい場合は、Numberモジュール(コアモジュール)を有効にすると、フィールドタイプの選択肢に追加される。Numberモジュールもデフォルトでは無効になっている。

コア: 
Drupal7

コンテンツタイプのフィールド項目が多くなると、ノードの編集画面の整理(グループ分け等によるカスタマイズ)が必要になってくる。

フィールドセットなどで入力フォームをグループ分けするのに、独自の汎用カスタムモジュールの中で、hook_form_FORM_ID_alter() などのフックでフォームをカスタマイズしていましたが、そういったことは、普通に CCK をインストールしていれば GUI 操作で簡単に出来ることがわかった。

コンテンツタイプの「フィールドの管理」ページで、「追加」フォームの一番下、New group を追加すれば良い。

コア: 
Drupal6

ノード編集フォームの中の CCK フィールドの、例えばセレクトボックスをチェックボックスにしたい場合なんかは、GUI で変更できる。

  1. 「管理セクション」 > 「コンテンツの管理」 > 「コンテンツタイプ」 から、操作したいコンテンツタイプの「manage fields」をクリック。
  2. 操作するフィールドの「設定」をクリック。
  3. 「基本情報の変更」ボタンをクリック。
  4. 「ウィジェットタイプ」の中から変更したい設定を選んで、「継続」ボタンをクリック。
  5. 「値の数」を無制限か2以上にするとチェックボックスに、1を選ぶとラジオボタンになる。
  6. 「使用する値のリスト」に選択できるアイテムを設定する。phpコードで入力する場合は、フォームの ’#options’ に設定する配列を返すように書くと、動作する。
コア: 
Drupal6