Pylons 0.9.7 で validate エラーメッセージの表示位置変更 |
自動的にエラーメッセージを挿入してくれます。
「エラーメッセージを画面上部にまとめて表示したい」
という要件が発生した場合の対応方法を考えてみます。
テンプレートエンジンmakoには、エラーメッセージの内容は
c.form_errors
に挿入されています。
テンプレートで、
${c.form_errors.get('document')}
※ドキュメントはエラーが発生したオブジェクトの名前
としてやると、エラーメッセージが取得できます。
しかし、このままだとgetして意図的に表示させた箇所と、
エラーが発生したオブジェクトの前両方にエラーメッセージが
表示されてしまいます。
これを防ぐには、
${c.form_errors.pop('document')}
として、form_errorsから該当エラーを抜きます。
エラーが発生していない場合にはform_errorsに
documentエラーが登録されておらず、popしようとすると
プログラムがこけてしまいますので、
% if 'document' in c.form_errors:
${c.form_errors.pop('document')}
% endif
こんな感じで、存在チェックを行なえばよいかと。