デフォルトのスナッププロジェクト テンプレートで何が起こっているのか説明してもらえますか?
--------------------------------------------------------------------------
-- | Handle login submit
handleLoginSubmit :: Handler App (AuthManager App) ()
handleLoginSubmit =
loginUser "login" "password" Nothing
(\_ -> handleLogin err) (redirect "/")
where
err = Just "Unknown user or password"
-- | Render login form
handleLogin :: Maybe T.Text -> Handler App (AuthManager App) ()
handleLogin authError = heistLocal (bindSplices errs) $ render "login"
where
errs = [("loginError", textSplice c) | c <- maybeToList authError]
| The application's routes.
routes :: [(ByteString, Handler App App ())]
routes = [ ("/login", with auth handleLoginSubmit)
, ("/logout", with auth handleLogout)
, ("/new_user", with auth handleNewUser)
, ("", serveDirectory "static")
]
- なぜ () を返すのですか?
- 「コントローラー」(MVC で言えば) 関数の標準シグネチャは何ですか?
- ルート
index.tpl
のテンプレートとして使用することをどのように知っていますか?/
- シンプルな個人用 Web アプリのみを作成したい場合など、認証レイヤーを削除するにはどうすればよいですか?
ドキュメントとチュートリアルでは、主にスナップレット (またはテンプレート) について説明していますが、Haskell については触れていません。書店のようなアプリやブログの書き方の例を見るといいでしょう (公式のスナップ Web サイトでは、ブログのエントリがマークダウンで保存されているため、そこで何が起こっているのかわかりません)。