stepブロックを知ろう
基本のブロック構成
テンプレートを上から順に見ていくと、以下のようなブロック構成になっていることが分かります。フォームの現在のステップに応じて、該当するブロックの内容のみが表示され、その他のステップの内容は表示されません。
入力画面(step)でエラーが発生した場合は再入力画面(step#reapply)へ遷移し、エラーがなければ確認画面(step#confirm)へ遷移します。その後、確認画面から送信すると完了画面(step#result)へ遷移します。
Twigテンプレート例では入力画面と再入力画面を分けず、エラーがある場合も入力画面(step)内にメッセージを表示します。
なお、標準テンプレートでもTwigテンプレート例と同様に、再入力画面(step#reapply)を設けない構成にすることが可能です。
Formモジュールにおけるstepブロックの構成
<!-- BEGIN_MODULE Form --> <!-- BEGIN step --> (中略:はじめの入力画面) <!-- END step --> <!-- BEGIN step#reapply --> (中略:エラーがあったときの再入力画面) <!-- END step#reapply --> <!-- BEGIN step#confirm --> (中略:送信前の内容確認) <!-- END step#confirm --> <!-- BEGIN step#result --> (中略:送信後の完了通知) <!-- END step#result --> <!-- END_MODULE Form -->
{% set form = module('V2_Form') %}
{% if form.step == 'step' %}
(中略:はじめの入力画面 or エラーがあったときの再入力画面)
{% endif %}
{% if form.step == 'confirm' %}
(中略:送信前の内容確認)
{% endif %}
{% if form.step == 'result' %}
(中略:送信後の完了通知)
{% endif %}
次に表示するステップ操作の仕組み
基本的に、サンプルテンプレートを元に編集を加えるだけで利用することができます。そのため、以下の内容について編集する事はあまり多くはありませんが、どこでその記述をしているかについて説明します。
エラー時に表示されるstepの指定
GET, POSTの2通りの方法で指定が可能です。
- form要素のaction属性に?step=reapplyを指定(GET)
- input要素のname属性にerror、value属性にreapplyを指定(POST)
どちらか一方の指定だけで大丈夫です。エラーなどがあった場合は、ここで指定されたstepが表示されます。
次に表示したいstepの指定
HTMLのinput要素のname属性にstep、value属性にconfirmと記述しています。ここに次に表示したいstepの名前を入力します。エラーなどがなければ、ここで指定されたstepが表示されます。
例の場合では再入力の内容にエラーがあれば再入力画面( step#reapply )に戻ってきて、エラーがなければ確認画面( step#confirm )に遷移するという記述になります。