エラーメッセージの分岐
一つのフィールドで複数のエラーを検知したい場合があります。例えば以下のように、必須だけではなく、数値のみ許可したり、最大数値を設定したりです。
- 必須
- 数値のみ許可
- 100以下の数値を許可
今ままでのエラー表記
ここまでで紹介したエラー表記の仕方は、以下のようなコードでした。
<input type="text" name="age" value="{age}"> <input type="hidden" name="field[]" value="age"> <input type="hidden" name="age:validator#required"> <!-- 必須チェック --> <input type="hidden" name="age:validator#digits"> <!-- 数値チェック --> <input type="hidden" name="age:validator#max" value="100"> <!-- 最大数チェック --> <!-- BEGIN age:validator --><p class="notice">年齢が入力されていないか、数値(100以下)が入力されていません。</p><!-- END age:validator -->
間違ってはいませんが、どのエラーにひっかかっているのか判りにくいです。
エラーにあわせてメッセージを変える
<input type="text" name="age" value="{age}"> <input type="hidden" name="field[]" value="age"> <input type="hidden" name="age:validator#required"> <!-- 必須チェック --> <input type="hidden" name="age:validator#digits"> <!-- 数値チェック --> <input type="hidden" name="age:validator#max" value="100"> <!-- 最大数チェック --> <!-- BEGIN age:validator#required --> <p class="notice">年齢を入力してください。</p><!-- END age:validator#required --><!-- BEGIN age:validator#digits --> <p class="notice">年齢には数値を入力してください。</p><!-- END age:validator#digits -->><!-- BEGIN age:validator#max --> <p class="notice">年齢には100以下の数値を入力してください。</p><!-- END age:validator#max -->
エラーメッセージが分岐され必要なメッセージだけが出力されるようになりました。
このようにエラーメッセージ用のブロックを書き換える事で、複数のバリデーターを設定した場合のエラーで、別々のメッセージを表示させることができます。
<!-- BEGIN [対象の項目名]:validator#[オプション名] --><p>[エラーメッセージ]</p><!-- BEGIN [対象の項目名]:validator#[オプション名] -->
特殊なエラーメッセージ
フォームでファイルをアップロードする時に upload_max_filesize を超えた場合、POSTが空になるのでフィールド毎にエラーは出せない。 なので以下の記述で全体のエラーメッセージを出力。
<!-- BEGIN post:v#filesize -->リクエストサイズが大きすぎます<!-- END post:v#filesize -->