Pylons 0.9.7 で validate エラーメッセージの表示位置変更



FormEncodeの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


こんな感じで、存在チェックを行なえばよいかと。


もどる