フォームAPIの続き5
form再表示の際にform_stateの値を使用する方法
formを再構築させれば良い。
具体的には、hook_form_submitの中で
$form_state['rebuild'] = TRUE;
を定義してやればよい。
Formが再表示する際にカウントアップ
1.Formの定義
<?php /** * hook_menu()の例 */ function multiform_menu(){ $items['multiform'] = array( 'title' => t('Multi Page'), 'page callback' => 'drupal_get_form', 'page arguments' => array('multiform_exampleform'), 'type' => MENU_NORMAL_ITEM, 'access arguments' => array('access content'), ); return $items; } function multiform_exampleform($form,&$form_state){ $step = isset($form_state['values']) ?(int)$form_state['storage']['step'] : 0; $form_state['storage']['step'] = $step + 1; $form['indicator'] = array( '#type' => 'fieldset', '#title' => t('Step @number',array('@number' => $step)) ); $form['submit'] = array( '#type' => 'submit', '#value' => 'submit' ); return $form; } ?>
2.Submit関数を定義
<?php /** * */ function multiform_exampleform_submit($form,&$form_state){ $form_state['rebuild'] = TRUE; return; } ?>
これを表示して、Submitを押すと、
(初期表示)
(Submit1回目)
(Submit2回目)
カウントアップされる。
php $form_state['rebuild'] = TRUE;
を設定していると、
Submit後にFomrが再構築される。(=form_stateの値がmultiform_exampleformで使用
できる)
ただそれだけです。