多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國(guó)內(nèi)最全I(xiàn)T社區(qū)平臺(tái) 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁(yè) > php框架 > ZendFramework > Zend Framework教程-Zend_Helpers-視圖助手-創(chuàng)建自己的視圖助手

Zend Framework教程-Zend_Helpers-視圖助手-創(chuàng)建自己的視圖助手

來(lái)源:程序員人生   發(fā)布時(shí)間:2014-01-10 14:39:38 閱讀次數(shù):3567次

先來(lái)個(gè)常用的練練手,高深的自己啄木吧、


1.我們知道zend默認(rèn)會(huì)自動(dòng)注冊(cè)/views/helpers下的助手。如果不在這個(gè)目錄下,那就需要addHelperPath之類(lèi)的東西來(lái)加載指定的路徑

2.根據(jù)上上一節(jié),說(shuō)的通常是繼承Zend_View_Helper_Abstract,這個(gè)是必須的。然后類(lèi)的前綴要求是Zend_View_Helper_。這個(gè)的唯一好處就是是zend默認(rèn)命名空間,不需要定義。如果你不用Zend_View_Helper_也可以,那就需要注冊(cè)了。所以沒(méi)必要大費(fèi)周折。所以就用Zend_View_Helper_前綴即可。


來(lái),貼點(diǎn)文檔說(shuō)明“

--------------------------------------------------

編寫(xiě)自定義的助手類(lèi)很容易,只要遵循以下幾個(gè)原則即可:

  • helper的類(lèi)名最后部分必須是helper的名稱(chēng),并使用混合大小寫(xiě)字格式。例如,你在寫(xiě)一個(gè)名為“specialPurpose”的類(lèi),類(lèi)名將至少是"SpecialPurpose",另外你還應(yīng)該給類(lèi)名加上前綴,建議將“View_Helper”作為前綴的一部份:“My_View_Helper_SpecialPurpose”。(注意大小寫(xiě))你將需要將前綴(包含或不包含下劃線(xiàn))傳遞給addHelperPath()setHelperPath()

  • 類(lèi)中必須有一個(gè)public的方法,該方法名與helper類(lèi)名相同。該方法將在你的模板調(diào)用"$this->specialPurpose()"時(shí)執(zhí)行。在我們的“specialPurpose”例子中,相應(yīng)的方法聲明可以是“public function specialPurpose()”。

  • 一般來(lái)說(shuō),助手類(lèi)不應(yīng)該echo或print或有其它形式的輸出。它只需要返回值就可以了。返回的數(shù)據(jù)應(yīng)當(dāng)被轉(zhuǎn)義。

  • 類(lèi)文件的命名應(yīng)該是助手類(lèi)的名稱(chēng),比如在"specialPurpose"例子中,文件要存為“SpecialPurpose.php”。

把助手類(lèi)的文件放在你的助手路徑下, Zend_View就會(huì)自動(dòng)加載,實(shí)例化,持久化,并執(zhí)行。

下面是一個(gè)SpecialPurpose 助手代碼的例子:

<?phpclass My_View_Helper_SpecialPurpose{    protected $_count = 0;    public function specialPurpose()    {        $this->_count++;        $output = "I have seen 'The Jerk' {$this->_count} time(s).";        return htmlspecialchars($output);    }}        

在視圖代碼中,可以調(diào)用 SpecialPurpose 助手任意次。它將被實(shí)例化一次,并且會(huì)在Zend_View實(shí)例的生命周期內(nèi)持久存在。

<?php// remember, in a view script, $this refers to the Zend_View instance.echo $this->specialPurpose();echo $this->specialPurpose();echo $this->specialPurpose();        

輸出結(jié)果如下所示:

I have seen 'The Jerk' 1 time(s).I have seen 'The Jerk' 2 time(s).I have seen 'The Jerk' 3 time(s).        

有時(shí)候需要訪(fǎng)問(wèn)調(diào)用Zend_View 對(duì)象-例如,如果需要使用已指定的編碼字符集,或想解析其它視圖腳本作為助手的一部分。為了訪(fǎng)問(wèn)視圖對(duì)象,助手類(lèi)應(yīng)該有一個(gè)setView($view) 方法,如下:

<?phpclass My_View_Helper_ScriptPath{    public $view;    public function setView(Zend_View_Interface $view)    {        $this->view = $view;    }    public function scriptPath($script)    {        return $this->view->getScriptPath($script);    }}        

如果助手類(lèi)有一個(gè) setView() 方法,它將在助手類(lèi)第一次實(shí)例

--------------------------------------------

創(chuàng)建助手的應(yīng)用舉例

寫(xiě)一個(gè)很挫的部門(mén)select控件

1;創(chuàng)建類(lèi)文件:/views/helpers/DepartmentSelect.php

2.類(lèi)代碼如下:

 

<?php/**  * Helper *   *//**  * DepartmentSelectHelper *   */class Zend_View_Helper_DepartmentSelect extends Zend_View_Helper_Abstract{	private $_departmentModel;   /**    * 獲取部門(mén)列表    * @param string $id    * @param string $default    * @param array $attr    * @return string    */    public function departmentSelect ($id,$default=null,$html=null)    {    	$this->_departmentModel = new Model_DepartmentModel ();    	$department = $this->_departmentModel->getList();           	$select_str = PHP_EOL.'<select id="'.$id.'" name="info['.$id.']" '.$html.'>'.PHP_EOL;    	$opton_str = '';    	foreach ($department['result'] as $ky=>$val){    		$opton_str .= sprintf('<option value="%s" '. ( $default==$val['dep_id'] ? 'selected' : '' ).'>%s</option>'.PHP_EOL,$val['dep_id'],$val['dep_name']);    	}    	$select_str .= $opton_str.PHP_EOL;;    	$select_str .= '</select>'.PHP_EOL;    	return $select_str;    }}

3.view,phtml中的使用方法是:

無(wú)默認(rèn)值

<?php  echo $this->departmentSelect('user_department',null,' class="select" ');?>

有默認(rèn)值

<?php  echo $this->departmentSelect('user_department',$this->data['user_department'],' class="select" ');?>


是不是可以寫(xiě)點(diǎn)程序,去練練手了!遵循規(guī)則,就不會(huì)吃大虧。



生活不易,碼農(nóng)辛苦
如果您覺(jué)得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)
程序員人生
------分隔線(xiàn)----------------------------
分享到:
------分隔線(xiàn)----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 欧美艳星xxx | 尤物视频免费 | 性色生活免费看性大片 | 波多野结衣视频在线免费观看 | 综合爱爱网 | 男女性刺激爽爽免费视频 | 欧美最猛性xxxxx免费 | 日本高清中文字幕一区二区三区 | 艹碰在线 | 欧美高清免费一级在线 | 一级做a爰片性色毛片视频图片 | 国产一区二区三区久久精品小说 | 亚洲伊人色综合网站小说 | 精品国产一区二区三区在线 | 亚洲视频免费在线观看 | 久操精品| 中文字幕首页 | 美国黄色一级毛片 | 校园春色第一页 | 欧美freesex黑人又粗又 | 男女xx00xx的视频免费观看 | 欧美精品video | 国产成人三级视频在线观看播放 | 国产精品60岁老女人 | 日本免费观看网站 | 一区二区三区久久 | 国产99视频精品免视看7 | 国产精品视频国产永久视频 | 亚欧乱色一区二区三区 | 一级毛片在线 | 亚洲欧美日韩一区二区 | 免费羞羞 | 亚洲另类网 | xxxxx性欧美| 手机在线看 | 9久热久爱免费精品视频在线观看 | 色拍自拍亚洲综合在线 | 福利久草| 亚色成人 | 免费中国jlzzjlzz在线播放 | 伊人影院2019|