[PHP-users 26732] Re: QuickForm+Smartyでのフォーム配列の表現について

arts net arts_net @ hotmail.com
2005年 9月 1日 (木) 16:31:46 JST


すいません。自己解決です。
dump したところ address という配列名で呼べそうだったので
{$form.address.0.html} としたところ呼べました。
先に dump して確かめるべきでした。お騒がせしました。

> 皆さん、はじめまして、artsと申します。
>
> 現在checkboxの値を配列で受け取る表現を
> QuickFormで作成し、Smartyで吐くようにしようとしています。
> QuickFormを使わないで純粋にHTMLでフォームを作成した場合
>
> <input type='checkbox' name='address[]' value='東京都中央区'>
> <input type='checkbox' name='address[]' value='東京都千代田区'>
> <input type='checkbox' name='address[]' value='東京都新宿区'>
> <input type='checkbox' name='address[]' value='東京都渋谷区'>
>
> という具合で作成する場合が多いと思います。
> しかしQuickFormを使った場合PHP側で
>
> $form->addElement('checkbox', 'address[]', null, '東京都中央区');
> $form->addElement('checkbox', 'address[]', null, '東京都千代田区');
> $form->addElement('checkbox', 'address[]', null, '東京都新宿区');
> $form->addElement('checkbox', 'address[]', null, '東京都渋谷区');
>
> という具合になると思うのですが、そうするとSmartyテンプレートでは
>
> {$form.address[].html} {$form.address[].label}
>
> と書いて呼ぶことになりますが、お察しのとおりブラケット"[]"があるため
> syntax error: unrecognized tag: $form.address2[].html
> となります。Smartyのエスケープをマニュアルで見たのですが
> htmlエスケープやエンコードのことしか書いてなくて使い方がよくわかりません。
> この場合具体的にどのようにコードしたらいいのでしょうか?
>
> 他のエレメントは正常にSmartyテンプレートに吐かれますし
> 上記の例も「address[]」でなく「address」というnameにしてしまえば正常に動作
し
> ます。
> ただ値を受け取った後のロジックをできれば以前のまま使いたいので
> どうしても配列で受け取りたいのです。SmartyやQuickFormは最近使い始めたばか
り
>> 不慣れでしょうもない質問かもしれませんがどなたかご教授ください。よろしくお
願
> いします。


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