[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 メーリングリストの案内