Zend框架車身標籤視圖助手
綜述
在這裡,我將討論建立一個視圖助手修改HTML標記,更具體的身體標記。 創建的視圖助手允許的功能類似於頭* / inlineScript視圖助手已經在標準Zend框架視圖助手,但允許綱領性修改標籤屬性。 當然檢查了演示和代碼頁 GitHub上。
動機
Zend框架的標準視圖助手是一個偉大的一套工具,用於簡化世俗查看任務和允許修改/添加的腳本和頭塊(一般由佈局)從申請醜陋的查看,而無需修改(即頭 * / inlineScript查看傭工)。
後一次,我發現需要進行修改的<body>標記,例如添加的OnLoad ,類或樣式屬性等我也需要能夠執行此從其他視圖助手。 藉此下面的人為例子...
在X網站,某些網頁中包含的標準道場形式。 這些道場表格內舉行視圖助手方便。 一般來說,已經決定不列入道場的CSS類的標籤,並在人體內只在必要時添加它們。 也許有幾種視圖助手頁面上需要添加自己的屬性到body標籤。(我說這是人為的)
它是如何工作
當創建 body標籤視圖助手我很快意識到,大多數的代碼並不是針對我所發展,所以我拿出了共同的功能集成到一個抽象類。 由混凝土澆築的抽象類是可以修改任何標籤以同樣的方式為體標記這裡討論使得代碼更加versitile。
引擎蓋下的(可以這麼說)的代碼是根據該頭 *和inlineScript視圖助手。 它利用Zend_View_Helper_Placeholder_Container_Standalone來存儲屬性和它們的值,直到它們是必需的。 該容器本身使用Zend_Registry來存儲值的關鍵下定義的類(如果你看一下單元測試我清除註冊下來後每次試驗)。
該代碼會,來搭配的“ 裸體使用Zend_Layout和Zend_View的 “代碼我寫幾個星期前或作為標準的一部分,Zend Framework的MVC的安裝。
用法
這個類應該是非常簡單易用。 首先需要兩個條目內的佈局腳本如下:
<?PHP的echo $這個 -> bodyTag()?> <?PHP的echo $這個 -> bodyTag() - >“的toString(Pro_View_Helper_AbstractTag::關閉)?>
注意:您需要更改類名,你應該移動到您自己的視圖助手庫。 顯然,可以通過不斷的實現(bodyTag),以及通過抽象類。
一個例子進行更改你的身體標記使用的視圖助手呼應 <body class="nihilo myclass" style="text-align-left; width: 80em">是:
<?PHP的 $這個 -> bodyTag('類','無中生有') - >“bodyTag('風格','文本對齊:左') - >“bodyTag('風格','寬:80em',虛假,';') - >“bodyTag('類','myclass的') ?>
這是可以做到整個視圖文件,在一些視圖助手,並在佈局文件(提供了其前體標籤是寫出來)。 屬性可以刪除 /覆蓋,而值可以添加和追加(分隔符可以通過)。 如果同一個屬性的值是通過幾次只有一個副本寫入該屬性。
對於任何一個完整的演示叉GitHub的庫和運行demo.php文件在您自己的瀏覽器,或者訪問這個頁面看到它在行動。 使用本demo.php腳本假設你已經在Zend自動加載(或類似)已經安裝。
創建你自己的標籤幫手
為了實現自己的視圖助手簡單地擴展抽象類的標籤,並覆蓋下面的類屬性:
- $ _regKey:唯一鍵的標記(用於Zend_Registry)
- $ _validAttributes:數組有效的屬性名稱,應該是小寫遵守W3C的
- $ _selfClosing:布爾值,指定如果標籤是自動關閉與否,如<br/>
- $ _tagName:名稱標籤(即身體在這個例子中)
所以,最後,代碼為 bodyTag視圖助手本身,它非常緊湊:
/ ** *視圖助手對身體的標籤 * * @作者沃特金斯勞埃德自21/08/2010 * * @ @ * @臨包分裝 ViewHelper * /類 Pro_View_Helper_BodyTag擴展 Pro_View_Helper_AbstractTag {/ ** *註冊表項佔位符* * @ VaR的字符串* /保護 $ _regKey ='Pro_View_Helper_BodyTag'; / ** *哪些屬性是有效的* *目前僅科技型中小企業支持的屬性 *(商S =嚴格,T =過渡,女=框架型)* * @見 http://www .w3schools.com/tags/tag_body.asp風險數組 * * @ /保護 $ _validAttributes =陣列(/ *標準屬性 * /'類','目錄','身份證','郎','風格','稱號',' 的XML :郎',/ *事件屬性* /'的OnClick','ondblclick','的OnLoad','onmousedown','onmousemove等','onmouseout','onmouseover','onmouseup','onkeydown', 'onkeypress','onkeyup','onunload',); / ** *自結束標記? * * * @布爾風險 /受保護的$ _selfClosing = 0; / ** * * * @標籤名VaR的字符串* /保護 $ _tagName ='身體';}
如果你看一看庫還有一個組,單元測試,充分覆蓋的功能。 單元測試是用PHPUnit的 ,並在BodyTagTest.php文件。
終於 ...
在這裡,我已經向您展示我的實現一個抽象的標籤抽象視圖助手(克朗)和它的身體標記的實現。 雖然 JavaScript功能可以實現其他方式(而不是硬編碼在輸出時間)其他的東西不能(沒有 JavaScript是)不改變其他部位的應用。 我希望你找到有用的類應用程序中的...



















































我就自動的連接問題,造成了對 XML的代碼,所以請忽略這一問題:)
[...]原來這裡:Evilprofessor.co.uk » Zend框架車身標籤視圖助手不[...]
[...]更多從原始來源:Evilprofessor.co.uk » Zend框架車身標籤視圖助手共享和[...]