Drupal 7 - FAPI でマルチステップ フォームを作成しています。
メインの hook_form() では、さまざまなステップへのリダイレクトが処理されます。
function hook_form($form, &$form_state) {
if (empty($form_state['storage']['step'])) {
$form_state['storage']['step'] = 0;
}
switch($form_state['storage']['step']) {
case 0:
$form= _step_0($form, $form_state);
break;
case 1:
$form = _step_1($form, $form_state);
break;
case 2:
$form = _step_2($form, $form_state);
break;
case 3:
$form = _step_3($form, $form_state);
break;
case 99:
$form = _step_end($form, $form_state);
break;
}
return $form;
}
ステップ 2 には、form_values をストレージに保存し、同じフォームをリロードするオプションの「Add onther」ボタンがあります (ステップ 2)。しかし、このフォームを数秒間リロードすると。以前のフォーム値は、必要な空白の (新しい) フォームではなく、デフォルトのフォーム値として表されています。
function inschrijven_form_submit($form, &$form_state) {
switch ($form_state['storage']['step']) {
case 0:
switch($form_state['values']['op']) {
case 'Next' :
....
$form_state['storage']['step'] = 1;
break;
}
break;
case 1:
switch($form_state['values']['op']) {
case 'Next' :
....
$form_state['storage']['step'] = 2;
break;
}
break;
case 2:
switch($form_state['values']['op']) {
case 'Next' :
....
$form_state['storage']['step'] = 3;
break;
case 'Add another' :
$form_state['rebuild'] = TRUE;
....
$form_state['storage']['step'] = 2;
return;
break;
.....
}
}
各送信後に form_state['values'] を手動でクリアしようとしましたが、成功しませんでした。別の機能を追加するこのマルチステップを誰が達成できますか?