さてさて引き続きRevelのチュートリアルをやっていきましょう。
<form action="/App/Hello" method="GET"> <input type="text" name="myName" /><br/> <input type="submit" value="Say hello!" /> </form>
をIndex.htmlに追記。多分footerの前あたり。
そうするとアクションがないのでエラーが出ます。
controller/App.goにfunction Helloを追記してViewにHello.htmlを追加すればうごきます。
func (c App) Hello(myName string) revel.Result { return c.Render(myName) }
{{set . "title" "Home"}} {{template "header.html" .}} <h1>Hello {{.myName}}</h1> <a href="/">Back to form</a> {{template "footer.html" .}}
Index.htmlでmyNameという名前をつけたtextの中身がそのままHelloの引数にmyNameとして渡されます。(名前が同じじゃないと値が入りません)
別の名前をつけたtextを追加して引数にもstringを追加したら二つ渡すこともできました。
簡単便利素敵。
いい感じですね。
ここで一つ疑問に思いました
routesに記入してないのになんで動くの?
ということでconf/routesを見てみると…
# Catch all * /:controller/:action :controller.:action
それっぽいのありました。
この記述でどうやら/コントローラー名/アクション名でコントローラー.アクション()が実行されるようになってるんですね。安心。
ねむい。とりあえず今日はここまで。続きは明日。
validationとFlashでどうやら終わりですね。短い。最高。
ではまた。