SmartTemplate 1.2.1 官方源檔案 可以從http://download.csdn.net/source/670995下載
本系列文章中的執行個體代碼可以到我的資源http://download.csdn.net/source/670977下載
以前學東西都是東一塊西一塊的,現在正好有時間,學點東西,同時也做一下記錄,以便備忘,也希望可以幫到學習SmartTemplate 的同學,初學,文中難免有紕漏,如有錯誤或不同意見,希望可以跟我聯絡lxbin544930@163.com,我會及時更正,共勉。
5. DropDown_Boxes
【Content】basic/DropDown_Boxes.php:
<?php</p><p> require_once "../config/smarttemplate_basic.cfg.php";</p><p> $page = new SmartTemplate('DropDown_Boxes.html');</p><p> $cols = array( 'Red', 'Green', 'Blue' );<br /> $page->assign( 'COLORS', $cols );<br /> $page->assign('default', "Blue" );<br /> $page->output();</p><p>?>
【Template】templates/basic/DropDown_Boxes.html:
<form><br /><select name="color"><br />{options:COLORS,default}<br /></select><br /></form>
【Return】
<form><br /><select name="color"><br /><option>Red</option><br /><option>Green</option><br /><option selected="selected">Blue</option></p><p></select><br /></form>
【】
【瑣記】
這是一個在模板中使用option標籤的例子,只是類似<option>選項1</option><option>選項2</option>這樣的不帶value值的選擇項,帶value屬性的例子在擴充功能檔案夾裡[extensions/options.php]。
SmartTemplate模板中使用{options:COLORS,default}來表示select的選項集合<option>,對應的php處理檔案中要把相應的array變數$cols通過$page->assign( 'COLORS', $cols );賦值給COLORS,實際上模板類是將{options:COLORS,default}解析為smarttemplate_extension_options ( $param, $default = 'Blue' ),簡單的說是把 '{擴充功能項:' 解析成了 'function smarttemplate_extension_擴充功能項(' 而冒號後面的作為對應函數的參數項的值。我每次都把相關功能的代碼貼在附錄裡,這樣既可以方便我們更快更準確的理解模板相關功能的使用,同時也省去了囉嗦晦澀的解釋。
【附錄】
include/smarttemplate_extensions/smarttemplate_extension_options.php的PHP代碼,我對以下代碼做了一些修改,注釋部分為原來的代碼(不做解釋,僅供參考,方便理解和查閱)
<?php</p><p>/**<br />* SmartTemplate Extension options<br />* Creates HTML DropDown Option list from an array<br />*<br />* Usage Example I:<br />* Content: $template->assign('pick', array( "on", "off" ) );<br />* Template: Choose: <select name="onoff"> {options:pick} </select><br />* Result: Choose: <select name="onoff"> <option>on</option><option>off</option> </select><br />*<br />* Usage Example II:<br />* Content: $template->assign('color', array( "FF0000" => "Red", "00FF00" => "Green", "0000FF" => "Blue" ) );<br />* $template->assign('default', "00FF00" );<br />* Template: Color: <select name="col"> {options:color,default} </select><br />* Result: Color: <select name="col"> <option value="FF0000">Red</option><option value="00FF00" selected>Green</option><option value="0000FF">Blue</option> </select><br />*<br />* @author Philipp v. Criegern philipp@criegern.com<br />*/<br />function smarttemplate_extension_options ( $param, $default = '_DEFAULT_' )<br />{<br />$output = "";<br />if (is_array($param))<br />{<br />$keyindex = 0;<br />foreach ($param as $key => $value)<br />{<br />if ($key==$keyindex++ && is_numeric($key))<br />{<br />//$output .= '<option' . (($value == $default) ? ' selected' : '') . '>' . $value . '</option>';<br />$output .= '<option' . (($value == $default) ? ' selected="selected"' : '') . '>' . $value . '</option>' . "/n";<br />}<br />else<br />{<br />//$output .= '<option value="' . $key . '"' . (($key == $default) ? ' selected' : '') . '>' . $value . '</option>';<br />$output .= '<option value="' . $key . '"' . (($key == $default) ? ' selected="selected"' : '') . '>' . $value . '</option>' . "/n";<br />}<br />}<br />}<br />return $output;<br />}</p><p>?>