HTML_QuickFormのhierselectとSmartyとの連携
お仕事でHTML_QuickFormのhierselectを使いました。沿線を選んだ後に該当する駅をselectでプルダウン表示する処理を作らなければならなかったのです。最初はAJAXを使ってやろうと思ってサンプルを探していたら、たまたまPHPならHTML_QuickFormのhierselectで出来ることを見つけ、こちらで実現しました。
簡単に作成できてJavaScriptのコードは書かなくて済むので、お仕事で使うには丁度いいです。
サンプルは次です。
<?php /** * hierselectサンプル */ ini_set('include_path', 'PEAR/' . PATH_SEPARATOR . 'Smarty-2.6.20/'); /** * Smarty */ require_once 'libs/Smarty.class.php'; /** * HTML_QuickForm */ require_once 'HTML/QuickForm.php'; require_once 'HTML/QuickForm/Renderer/ArraySmarty.php'; /** * 沿線駅データ */ // 沿線 $line = array ( 1 => 'JR東海道・山陽本線', 2 => 'JR山陽本線', 3 => 'JR福知山線', ); // 駅 $station = array ( 1 => array ( '' => '選択して下さい。', 1 => '尼崎', 2 => '立花', 3 => '甲子園口', 4 => '西宮', 5 => 'さくら夙川', 6 => '芦屋', 7 => '甲南山手', 8 => '摂津本山', 9 => '住吉', ), 2 => array ( '' => '選択して下さい。', 43 => '神戸', 44 => '兵庫', 45 => '新長田', 46 => '鷹取', 47 => '須磨海浜公園', 48 => '須磨', 49 => '塩屋', 50 => '垂水', ), 3 => array ( '' => '選択して下さい。', 73 => '尼崎', 74 => '塚口', 75 => '猪名寺', 76 => '伊丹', 77 => '北伊丹', 78 => '川西池田', 79 => '中山寺', 80 => '宝塚', ), ); /** * エリア・市区町村 */ // エリア $area = array( 1 => '神戸', 2 => '尼崎', ); // 市区町村 $shikuchouson = array( 1 => array( '' => '選択して下さい。', 1 => '神戸', 2 => '兵庫', ), 2 => array( '' => '選択して下さい。', 3 => '尼崎', 4 => '塚口', ), ); /** * hierselect */ $form = new HTML_QuickForm('sample'); // 交通 $form->setDefaults(array('line_station' => array(2, 45))); $sel =& $form->addElement('hierselect', 'line_station', '交通:'); $sel->setOptions(array($line, $station)); // エリア $form->setDefaults(array('area_shikuchouson' => array(2, 4))); $sel =& $form->addElement('hierselect', 'area_shikuchouson', 'エリア:'); $sel->setOptions(array($area, $shikuchouson)); /** * Smarty */ $smarty = new Smarty(); $smarty->compile_dir = './templates_c'; $smarty->template_dir = './'; $renderer = new HTML_QuickForm_Renderer_ArraySmarty($smarty); $form->accept($renderer); $smarty->assign('form', $renderer->toArray()); $smarty->display('sample.tpl');
テンプレート側の記述はこのようになります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="cache-control" content="no-cache" /> </head> <body> <form> 交通: {$form.line_station.html} <br /> エリア {$form.area_shikuchouson.html} </form> </body> </html>
■
名の知れたPHPのソフトウェアに何があるのか整理。正確である保障はありませんのでご注意下さい。
種類 | 製品名 | データベース | フレームワーク | 登場時期 | ライセンス |
---|---|---|---|---|---|
Wiki | MediaWiki | MySQL,PostgreSQL | - | 2002年頃? | GPL |
Wiki | PukiWiki | なし | - | ? | GPL |
CMS | Joomla! | MySQL | - | ? | GPL v2 |
CMS | Geeklog | MySQL,SQLServer | - | ? | GPL |
CMS | Drupal | MySQL,SQLServer | - | 2001年 | GPL |
CMS | MODx | MySQL | - | ? | GPL |
CMS | XOOPS | MySQL | - | 2001年 | GPL |
CMS | PHPNuke | MySQL | - | ? | GPL |
CMS | eZ Publish | MySQL,PostgreSQL | - | ? | GPL |
CMS | Nucleus CMS | MySQL | - | 2001年 | GPL |
EC | EC-CUBE | MySQL,PostgreSQL | - | 2006年 | GPL/商用 |
EC | osCommerce | MySQL | - | 2003年 | GPL |
EC | Zen Cart | MySQL | - | ? | GPL |
BBS | Simple Machines Forum | MySQL | - | 2003年 | Simple Machines License |
BBS | phpBB | MySQL,PostgreSQL | - | 2000年 | GPL |
Blog | WordPress | MySQL | - | ? | GPL |
SNS | OpenPne | MySQL | - | 2005年 | PHPライセンス |
CRM | SugarCRM | ? | - | ? | SugarCRM Public Licence |
グループウェア | アイポ4 | PostgreSQL | - | 2008年 | GPL/商用 |
広告配信 | OpenX | MySQL,PostgreSQL | - | 2008年 | Attribution-NonCommercial-ShareAlike 2.5 |
ソーシャルブックマーク | Pligg | ? | ? | ? | ? |