Kahua5-2 form(POST)の作成

前回はformのGet編でした。今回はPOST編です。
というか前回でPOST編も書くつもりだったんだけどGetだけ書いた時点で間違って投稿してしまった。


前回の内容を修正してPOSTにします。
処理としては前回と同じく入力された値を表示するだけです。

(define-entry (form-test :keyword text submit)
              (define form-cont
                (entry-lambda (:keyword text)
                              (if text (show-page text))
                              ))

              (define (show-page str)
                (kahua:xml-template->sxml
                  page-template
                  :title (title/ (@/ (id "title"))
                                 "appname")
                  :body (div/ (@/ (id "body"))
                              (form/cont/ (@@/ (cont form-cont))
                                          (input/ (@/ (type "text") (size 50) (name "text")))
                                          (input/ (@/ (id "search-button") (type "submit") (name "submit") (value "button")))
                                          )
                              (if str (text/ str) empty)
                              )))

              (show-page #f))


コアになる部分は"(form/cont/ (@@/ (cont form-cont))"の行です。
"form/cont/"の説明はKahua.org form/cont/を見てください。
"form/cont"もあります(細かい事はここではつっこみません)。


"form/cont" or "form/cont/"の使い方は簡単で、"(@@/ (cont proc))"とともに使用します。ボタンが押されるとprocが呼ばれます。
ユーザが入力した内容は"entry-lambda"のキーワード引数に渡されるので、あとは必要な処理を行いページの表示を行うだけです。
"define-entry"と同じく入力されない場合は#fが渡されます。


これでユーザ登録やログインページ等のページが作れるはずです。


このPOSTを使うだけで、Kahuaではメッセサンオーの問題(スラド)のようなおバカなサイトにはならないはずです。
また、Kahuaは継続ベースですのでセッション管理も気にしなくても良い(はず)なので楽です。SSL認証とかはどうするのかは分からないけど。


DBさえ触らないのであればここまでの知識だけで基本的にサイトは作れるはずです。
次回はユーザ認証関係かな。それが終わればユーザ認証関係でも使っているDBをやって基本的に終わりと。