[PHP-users 27888] Re: HTML_QuickForm + Smarty による 可変数のテキストボックス出力
OHGUMA Hidekazu
ohguma @ c-rcs.jp
2005年 12月 21日 (水) 13:35:43 JST
ohgumaです。
私はこんな形で処理しています。
他の方がどのようにしているのか私も興味があります。
freeze時にはhiddenに値が入っています。
---HTML_QuickForm----
for($i=1; $i<= $num; $i++) {
$form->addElement('text', 'text[' . $i . ']', null, null);
}
----Smarty----
{foreach key=no item=row from=$form.text}
テキスト{$no}:{$form.text[$no].html}<br>
{/foreach}
入力されたデータは配列として取得しています。
----
$text =& $form->getSubmitValue('text');
(環境)
PHP:4.4.1
Smarty:2.6.11
HTML_QuickForm:3.2.5
T Kammori wrote:
> いつもお世話になっております。
> 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をお使いの皆様は、
> どのような方法を用いておられるのでしょうか。
--
OHGUMA Hidekazu
PHP-users メーリングリストの案内