technological blog
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Ocsigenで再帰するフォームを作ってみた。
OcsigenのチュートリアルのActionというところを真似してみた。
作ってみたページの外観↓
再帰するフォーム(html)(入力しても意味ないよ)
以下はそのコード
OcsigenのチュートリアルのActionというところを真似してみた。
作ってみたページの外観↓
再帰するフォーム(html)(入力しても意味ないよ)
以下はそのコード
open XHTML.M
open Eliom
open Eliom.Xhtml
open Lwt
let list_mapi f l =
let rec local i = function
| [] -> []
| hd::tl -> f i hd :: local (i+1) tl
in
local 0 l
let mylist = ref []
let table_of_hitchart () =
table
(tr (td[pcdata "[トラック]"]) [td[pcdata " [曲名]"]])
(list_mapi (fun i s ->
tr (td[pcdata (string_of_int(i+1))]) [td[pcdata s]]) !mylist)
let my_table = create_table ()
let action_session =
new_service ~url:["add"] ~get_params:unit ()
let connect_action =
new_post_coservice' ~post_params:(string "moji") ()
let disconnect_action =
Actions.register_new_post_coservice'
unit
(fun sp () () ->
close_session sp >>=
(fun () -> return []))
let disconnect_box sp s =
post_form disconnect_action sp
(fun _ -> [p [submit_input s]]) ()
let input_box sp moji =
[p [pcdata "曲目を追加する: ";
string_input moji]]
let home_action sp () () =
let f = post_form connect_action sp (input_box sp) () in
return
(html
(head (title (pcdata "ADD")) [])
(body [h1 [pcdata "recursive form Example"];
h2 [pcdata "再生する曲目リスト"];
f;
table_of_hitchart()]))
let _ = register ~service:action_session home_action
let rec launch_session sp moji =
mylist := (moji :: !mylist);
set_session_data my_table sp moji
let _ = Actions.register
connect_action
(fun sp () login ->
close_session sp >>=
(fun () -> launch_session sp login;
return []))
PR