さて、いよいよRevelの公式チュートリアルラストスパートですよ!
頑張りましょう。
RevelTutorial the final#
前回名前を入れて表示させるとこまでやった気がします。その続きです。
Validation(入力のチェック)とFlash(一回だけ使う用のクッキー(ブラウザに一時保存))です
まずはapp.goのHelloを書きかえます。
func (c App) Hello(myName string) revel.Result { c.Validation.Required(myName).Message("Your name is required!") c.Validation.MinSize(myName, 3).Message("Your name is not long enough!") if c.Validation.HasErrors() { c.Validation.Keep() c.FlashParams() return c.Redirect(App.Index) } return c.Render(myName) }
二行目で入力されているかのチェック+エラーメッセージ設定。
三行目で入力最小文字数チェック+エラーメッセージ設定。
if c.Validation.HasErrors()でエラーがあるかどうか確認してあったら
c.Validation.Keep()でFlash用のクッキーに保存できるようにデータ整形(多分)
c.FlashParams()でいろいろなパラメータをクッキーに保存(Copies all given parameters (URL, Form, Multipart) to the flash cookie)
でApp.Indexに飛ぶ。
エラーがなければ今まで通り普通に表示ですね。
で、Index.htmlではデフォルトでflash.htmlを呼んでいて、Flashにエラーが保存されていれば表示するようになっています。
flash.htmlを呼んでるのはIndex.htmlの
<div class="container"> <div class="row"> <div class="span6"> {{template "flash.html" .}} </div> </div> </div>
のところですね。
ただこれdiv要素もエラーがあった時だけ表示するようにしたほうが自然な気がするんですけどそうでもないんですかね。どうなんでしょ。まあ。HTMLのことはまだよくわかんないですね。
flash.htmlについては特に難しいことはなさそうです。
{{}}で囲まれているやつはGo言語のテンプレートとして用意されている(一部Revelで独自に用意されている)記述だってこととifのときにorとか小なりとかが間じゃなくて頭に付く(1<2 ではなくて lt 1 2とかく)のがちょっと珍しいってことを覚えておけば問題ないと思います。(こちら参考記事です)
あーあと.Flash.errorにさっき設定したエラーメッセージが格納されることになります(エラーしてれば)。
range(for文みたいなもん)で回してるので配列で入ってくれるみたいですね。
さ!これで入力フォームに何も入れないもしくは二文字以下だったらIndexページに飛ばされてエラーが表示されるようになりました!試して!
なりました…?なりましたね…?
…はい!以上でRevelのTutorial終了です。やったね!
だいぶ簡単に使えそうでだいぶうれしいです。フレームワークってすごい。
いや、Zend(PHP)とかってこんなに簡単じゃなかった気がするのでやっぱりRevelがすごいのかもしれませんね。
まあかの有名なRubyOnRailsなんかもこんな感じにお手軽なんでしょうね。そりゃ流行るわ。
Revelの使い方の基本的なところがわかったので、次回こそ自分の開発に入っていきたいと思います。
RevelにSampleがあるのと自分でちょっと使いたいツールがあるのでTwitter関連のWebサービス(ツール)を作る予定です。お楽しみに。
ではまた。