share facebook facebook twitter menu hatena pocket slack

2011.11.09 WED

PHP + Smarty でセレクトボックス生成時の小ネタ

櫛田 草平

WRITTEN BY 櫛田 草平

下記のようにセレクトボックスのソースを書くと、2つめの選択肢はフォーカスが当てれません。
optgroupを使ったインデントのような表現もあるのですが、1次元でもこのように表現する事によって、jqueryでの制御も扱い易いです。


今回、PHP + Smarty で開発中に「html_options」で上記の事を実現する必要に駆られました。
まず、普通にセレクトボックスを生成する場合、下記のように書けばいいのですが、html_optionsはoptionのdisabledに対応していません。

■PHP側

$options = array(
    '1' => 'aaa',
    '2' => 'bbb',
    '3' => 'ccc',
);
$smarty->assign('options', $options);

■Smartyテンプレート側


そこで調べてみたところ、Smarty拡張クラスを改造して公開しているサイトがありました。

Smarty {html_options} plugin with ‘disabled’ support – justin hileman dot info

http://justinhileman.info/article/smarty-html-options-plugin-with-disabled-support/function.html_options.php.txt

上記リンク先の内容を「function.html_options.php」というファイル名で保存し、サーバ上に同名のファイル名があるので上書きします。
そして、下記のように書き直すことで同様の動作にすることができました。

■PHP側

$options = array(
    '1' => 'aaa',
    '2' => 'bbb',
    '3' => 'ccc',
);
$smarty->assign('options', $options);
$smarty->assign('disabled', array(2));

■Smartyテンプレート側


※この記事は、なかの人(piro556)が書いています。

櫛田 草平

櫛田 草平

cloudpackで運用、保守、構築、夜間対応を担当しており、日々様々な課題に対応していますのでこの経験を記事にしていけたらと思います。 櫛田 草平

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。