[PHP-users 27881] HTML_QuickForm + Smarty による 可変数のテキストボックス出力

T Kammori kammoridensya @ yahoo.co.jp
2005年 12月 21日 (水) 11:10:51 JST


いつもお世話になっております。
TKと申します。
HTML_QuickForm + Smarty を使用し、
・ユーザーの選択値によって
・テキストボックスの数が変動する
入力フォームを作成しております。
その実装方法について(主にSmarty側の記述方法)、悩んでおり
ます。
同じようなことを悩まれた方がおられましたら、
ご教授願えないでしょうか。
・実装例1
 -------- HTML_QuickForm作成側 -----------
 for ($i = 1; $i <= $usr_cnt; $i++) {
 $o_form->addElement('text', "usr_name{$i}", null,
null);
 }
 (注記) テキストボックス名に連番をつけています。
 -------- Smarty側 -----------
 {if $book_info.room_cnt >= 1}
 {$form.usr_name1.html}
 {/if}
 {if $book_info.room_cnt >= 2}
 {$form.usr_name2.html}
 {/if}
 ・・・以下略
 -------- 結果 -----------
 意図した動作はしますが、 
 どう考えてもスマートな方法ではない気がします。
 
・実装例2
 -------- HTML_QuickForm作成側 -----------
 for ($i = 1; $i <= $usr_cnt; $i++) {
 $o_form->addElement('text', "usr_name[]", null, null);
 }
 (注記) テキストボックス名に [] を付け、配列にしています。
 -------- Smarty側 -----------
 {section name=i loop=$form.usr_name}
 {$form.usr_name[i].html}
 {/section}
 -------- 結果 -----------
 ・入力画面には 意図どおりの数のテキストボックスが出力さ
れます。
 ・確認画面へ遷移した際、freezeする・しないにかかわらず
、入力値をセットできません。
 (注記) freeze しない場合、値なしのテキストボックスが 指定数
分出力されます。
 (注記) freeze した場合、 値なしのhiddenが出力されています
。
 (注記) var_dump($o_form) を確認したところ、
 [submit_values]の中に入力値が入っていました。
 (注記) 単独のテキストボックスでの正常動作は確認済みです。
***
ループ + echo では、HTML_QuickForm を使用する意味がなく
なってしまうと
思いますし・・
HTML_QuickForm + Smartyをお使いの皆様は、
どのような方法を用いておられるのでしょうか。
ご教授いただけますようお願いいたします。
よろしくお願いいたします。


PHP-users メーリングリストの案内

AltStyle によって変換されたページ (->オリジナル) /