Go言語を真剣に勉強してみた〜Revelでフラッシュメッセージ 等の出し方編〜


はじめに

こんにちは。某学校でプログラミング等の勉強中のサーバーサイドのプログラマーのワタタクです。
今回はRevelを使って、フラッシュメッセージやバリーデーションメッセージの出し方について書いていきます。

Revelを用いると簡単に出力できるので、早速やっていきましょう。

フラッシュメッセージ

1回限りの通知をユーザに表示するメッセージの事。

フラッシュメッセージの出し方

コントローラー

c.Flash.Success("フラッシュメッセージの内容")

テンプレート

{{ .flash.success }}

以上で完了。

バリデーション

エラー処理のこと。

バリデーションメッセージの出し方

コントローラー

① c.Validation.Require(変数).Message(出力されるバリデーションメッセージ)

② c.Validation.MaxSize(変数).Message(出力されるバリデーションメッセージ)

③ c.Validation.MinSize(変数).Message(出力されるバリデーションメッセージ)

④ c.Validation.Match(変数, regexp.MustCompile("パターン")).Message(バリデーションメッセージ)

① : 必須項目
② : 最大文字数
③ : 最小文字数
④ : 正規表現

if c.Validation.HasErrors() {
    c.Validation.Keep()
    c.FlashParams()
    return c.Redirect(リダイレクト先)
}
  • Validation.HasErrors() : コンテキストが空でない場合はtrueを返します。
  • Validation.Keep() : ValidationErrorsをFlash Cookieにシリアル化するようRevelに指示します。

テンプレート

{{ template "flash.html" . }}

入力したものを残す処理

テキストボックスに入力した値はボタンを押すと消えてしまいます。
なので、テキストボックスに入力したものを記憶して、バリデーション戻りの際には値をテキストボックスに表示する方法を紹介しておきます。→ ユーザビリティの向上。
*通常はセッションを使って行うがRevelを使うとこれも簡単にできる。

テンプレートに以下を記述するとバリデーション戻りの際に値が残っている。

{{ with $field := field "~~~~~" . }}
      <input type="text" name="~~~~~" id="~~~~~" value="{{ $field.Flash }}">
{{ end }}

以上。
もし何か間違っている等のご指摘があればご連絡ください。
最後まで読んで頂きありがとうございました。