function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

function node_menu() {
$items['admin/content'] = array(
'title' => 'Content',
'description' => 'Find and manage content.',
'page callback' => 'drupal_get_form',
'page arguments' => array('node_admin_content'),
'access arguments' => array('access content overview'),
'weight' => -10,
'file' => 'node.admin.inc',
);
// …
return $items;
}

フォーム(form)をカスタマイズ時に、hook_form_alter、hook_form_FORM_ID_alter、hook_form_BASE_FORM_ID_alterの何れかを実装して行います。ここで、既存のフォームを特定するために、そのform_idが必要となってきまして、どこでカスタマイズ先のフォームIDを取得するのかは戸惑いました。
例えば、LDAPモジュールをインストールして、認証関連設定ページ(Home » Administration » Configuration » People » LDAP Configuration のAUTHENTICATIONタブ)で、その設定フォームのform_idを見てみましょう。
/**
* Implement hook_form
*/
function your_custom_form($node, &$form_state) {
$form['type'] = array(
'#type' => 'radios',
'#options' => array(
'agree' => t('賛成'),
'disagree' => t('反対'),
),
'#title' => t('投票してください'),
);
$form['survey'] = array(
'#type' => 'fieldtext',
'#title' => t('反対意見'),
'#states' => array(
'visible' => array(
':input[name="type"]' => array('value' => 'disagree'),
),
),
);
}
/**
* Implementation of hook_menu()
* 新規フォームを表示するページのメニュー設定
*/
function my_module_name_menu() {
$items['test/form'] = array(
'title' => 'Ajaxテスト',
'page callback' => 'drupal_get_form',
'page arguments' => array('my_sample_form'),
'access arguments' => array('access content'),
);
}
/**
* フォームの各要素の記述
*/
function my_sample_form($form, &$form_state){
// メッセージ入力フィールド
$form['message'] = array(
'#type' => 'textfield',
'#title' => t('メッセージを入力'),
);
// 入力されたメッセージをajaxで表示する場所
$form['msg_wrapper'] = array(
'#type' => 'markup',
'#markup' => "",
'#prefix' => '<div id="msg-wrapper">',
'#suffix' => '</div>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'test_sample_form_ajax_callback',
'wrapper' => 'msg-wrapper',
'effect' => 'fade',
),
);
return $form;
}
/**
* ajaxに呼び出される関数
*/
function test_sample_form_ajax_callback($form, $form_state) {
// 入力されたメッセージを指定した場所にセット
$form['msg_wrapper']['#markup'] = '入力されたメッセージ:' .
check_plain($form_state['values']['message']) ;
// 置換する部品を返す
return $form['msg_wrapper'] ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('multiple_step_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* マルチステップフォームの定義
*/
function multiple_step_form($form, &$form_state){
switch( $form_state['pager'] ) {
case 'page_1' :
return page_one_form();
break;
case 'page_2' :
return page_two_form();
break;
}
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_1";
// 任一のメッセージ表示
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_one_form_submit';
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
// ステップの定義
$form_state['pager'] = "page_two";
// 任一のメッセージ表示
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
);
// サブミットボタンのイベントハンドラー
$form['#submit'][] = 'page_two_form_submit';
return $form;
}
/**
* ステップ1のボタンイベントハンドラー
*/
function page_one_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_two";
$form_state['rebuild'] = true;
return ;
}
/**
* ステップ2のボタンイベントハンドラー
*/
function page_two_form_submit($form, &$form_state){
$form_state['pager']['card_page']= "page_one";
$form_state['rebuild'] = true;
return ;
}
/**
* メニューでURLの定義
*/
function your_module_menu() {
$items['form/multiple-step'] = array(
'title' => t('Multiple Step Form Test'),
'page callback' => 'drupal_get_form',
'page arguments' => array('page_one_form'),
'access arguments' => array('access content'),
);
return $items;
}
/**
* ステップ1 フォームの定義
*/
function page_one_form( $form, &$form_state ){
$form['message_field'] = array(
'#type' => 'markup',
'#markup' => 'Form Step 1',
);
// サブミットボタン
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_1_ajax_callback',
),
);
return $form;}
}
/**
* ステップ2 フォームの定義
*/
function page_two_form( $form, &$form_state ){
$form['test_form']=array(
'#type' => 'item',
'#title' => 'Multiple Step Form',
'#markup' => '<p>Step 2</p>',
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => '送信',
'#ajax' => array(
'callback' => 'card_2_ajax_callback',
),
);
return $form;
}
/**
* ステップ1のコールバック関数
*/
function card_1_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_two_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main',
'<section class="block block-system clearfix"
id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}
/**
* ステップ2のコールバック関数
*/
function card_2_ajax_callback($form, &$form_state){
// 次のステップのフォームの用意
$form = drupal_rebuild_form( 'card_one_form', $form_state );
// フォームのHTML部分の置換コマンド用意
$commands[]=ajax_command_replace( '#block-system-main','<section class="block block-system clearfix" id="block-system-main">'.render($form).'</section>' );
return array('#type' => 'ajax', '#commands' => $commands);
}