html_optionsでリストボックス表示(size指定)や複数選択可能(multiple指定)を実現するには

smartyカスタム関数のhtml_optionsを使うと、htmlのドロップダウンリスト(プルダウンメニュー)を作成することができる。じゃあこれを拡張して、リストボックス表示や複数選択を可能にするにはどうするか。

smarty_function_html_options()のソースを追えばわかるけど、指定されたパラメータ名が name / options / values / output / selected 以外で、かつそのパラメータ値が配列以外の場合は、パラメータ名="パラメータ値"の形式でselectタグ内に追記してくれる仕様になっている。これを利用すれば、プラグインに手を入れるまでもなく対応が可能だ。

リストボックス表示を実現するには、selectタグにsize="n" (nはリスト表示したい行数)が指定できさえすればいい。選択肢が以下のように定義されており、

$options = array(
    1=>'1. ガーガー',
    2=>'2. ギーギー',
    3=>'3. わんわん',
    3=>'4. にゃんにゃん',
    5=>'5. ぐるっぱぐるっぱ'
    );

さらにこの配列が$optionsという変数名でsmartyテンプレートに渡されている場合は、こんな感じで指定できる。

{html_options
  name="list"
  options=$options
  selected=$list
  size=$options|@count
}

$optionsにcount修飾子(配列の要素数をカウントするphp関数【count()】)をあてているのだけど、@マークを付けないと配列全体に対して修飾子が作用してくれないので、ここは忘れずに指定しよう。

では次に、複数選択可能にするための指定方法。こっちはmultiple属性をつければいいだけなので、こんな感じになる。

{html_options
  name="list"
  options=$options
  selected=$list
  size=$options|@count
  multiple="multiple"
}

ただし複数選択を使いこなせるのは一部の利用者に限られると思うので、あえて複数選択をさせたい場合は、リストボックスではなくチェックボックスで実装した方がベター(だと思う)。

トラックバック(0)

このブログ記事を参照しているブログ一覧: html_optionsでリストボックス表示(size指定)や複数選択可能(multiple指定)を実現するには

このブログ記事に対するトラックバックURL: http://monolog.spanstyle.com/mt/mt-tb.cgi/309

このサイトについて

自分用リンク

Powered by Movable Type 4.22-ja

PR

このブログ記事について

このページは、ishiiが2005年11月24日 13:51に書いたブログ記事です。

ひとつ前のブログ記事は「rapidsite障害発生中?」です。

次のブログ記事は「kakaku.comのLUMIX DMC-FX8掲示板が面白すぎる件について」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

アイテム

  • swfobject.png
  • symfony.png
  • doclean.png
  • clean.png
  • twitterui.png
  • php5.2.8-warning.png
  • pagesaver.png
  • analytics.png
  • Munsell Hue Test.png
  • Munsell Hue Test0.png