日付順前後記事 / ←スパム閲覧の撲滅  無料で使える英語学習のWebサービス→

カテゴリ別前後記事 [開発関係:Smarty] /  

チェックボックスをキレイに並べる

前置き。
技術者たるもの、やはり技術を語れてなんぼだろう…という事で、技術的な情報で「なるほど」と思う事があったら、こまめに書き留めていくことにしようかと。

今回のお題は、Smartyでhtml_checkboxesを使ってチェックボックスを並べる時の話。

通常、html_checkboxesを使う場合は、以下のように使うかと思います。
{html_checkboxes name="prefecture" options=$action.checkboxes_prefecture selected=$action.prefecture separator=" "}
(アサインされた変数が$actionなのは、mapleを使った場合を想定しているからです。)

ただ、この場合、チェックボックスがずらっと並ぶ事になるので、例のように都道府県なんかだったりすると、ちょっと見映えがよろしくありません。

ちょっと調べてみると、「これだ!」という解決方法を発見しました。
"smarty研究(1) フォーム部品関数は隠し属性assignで使いやすく! | バシャログ"

つまり、一旦、配列にアサインし直してやれば、後はforeachを使ってループさせる部分を適当に変えてやれば、どんな見映えでも自由自在って事ですね。
{html_checkboxes name="prefecture" options=$action.checkboxes_prefecture selected=$action.prefecture assign="checkboxes"}
{foreach from=$checkboxes item="checkbox"}
<div class="checkbox">{$checkbox}</div>
{/foreach}
こんな具合…。ここでは、例としてチェックボックスひとつひとつをdivタグでくくるようにしています。こうすれば、後はcssで適当に見映えをキレイにしてやれば、等間隔に揃えるとかも簡単!

…と思って、mapleのテンプレートに適用してみたんですが、mapleだと基本的にアサインされる変数は全て自動的にエスケープされる為、そのままだとエスケープされた文字列が出力されてしまって、うまくいかない事が判明。(^^;

で、ちょっと試行錯誤して、次のようにしたら、いい感じで等間隔にチェックボックスを並べる事ができました。
{html_checkboxes name="prefecture" options=$action.checkboxes_prefecture selected=$action.prefecture assign="checkboxes"}
{foreach from=$checkboxes|smarty:nodefaults item="checkbox"}
<div style="width:150px;float:left;">{$checkbox|smarty:nodefaults}</div>
{/foreach}

フォームの内容をファイルやらDBやらに事前に置いておいて、そこから引っ張ってくるようにすれば、入力フォームの生成も簡単にできて、非常に楽でよいですね。(^-^)

| 開発関係::Smarty | 2007年11月16日(金) 20時34分 | comments (0) | trackback (0) |

コメント一覧

コメントする








(タグは使えません)

トラックバックURL

http://www.roomtom.com/blog/tb.php/76

トラックバック

このページの1番上へ

日付順前後記事 / ←スパム閲覧の撲滅  無料で使える英語学習のWebサービス→

カテゴリ別前後記事 [開発関係:Smarty] /  

プロフィール

TOM

サラリーマンを卒業して、晴れて自由人に。現在はベンチャーのCTOとしてITを極める為に日夜努力している。

サイト内検索

リンク

Ads by drk7.jp

Ads by Google

Ads by Amazon

アクセス元マップ

なかのひと

iKnow!バッヂ

POWERED BY

BLOGNPLUS(ぶろぐん+)

カテゴリ

最近書いた記事

最近の人気記事TOP5

最近のコメント

RSSフィード