Zend Framework 在 1.5 版尚未發布之前 , 要做 MVC 是使用 Zend_View 來將 View 部分獨立開來的 , 其實有使用過 Smarty 的老手應該也覺得 Zend_View 其實沒什新意 , 就是很簡單的 variable assign 而已 ....
當 Zend Framework 1.5 出來之後 , 新增了一個元件叫 Zend_Layout , 這個物件是為了解決版面佈局的問題 , 但這樣解釋應該會有人不懂 , 為何需要解決版面佈局問題 ?
我們回想 Smarty 與 Zend_View 共同的作法就是 , 當 variable assign 都作好後 , 最後就是呼叫 $smarty->display() 或 $view->render() 之類的去把 view script 顯示出來對吧 , Zend_Layout 的作法是多了一個步驟 , Zend_Layout 會先讀取一個 layout script , 然後再將 view script 的內容放在 layout script 中作結合 , 如果要修改網站的整體版面佈局 , 只需要動到 layout script 的部分即可 , 想想看 , 大部分網站都會共用同一種版面佈局對吧 , 尤其是很多 Open Source 都有開放 Skin 的更換 , 而用 Zend_Layout 就很容易可以達成這些
在官方網站上面已經有 Zend_Layout 的說明文件與範例 , 這裡就不再多說 , 我今天要說的是 , 怎樣讓畫面設計更加簡單 , 其實我仍是偏好在 Dreamweaver 下編輯版面的 , 但是若照官方網站說明 Zend_Layout 的方式 , 其實要做 view script 有點礙手礙腳 , 因為 view script 的內容若不使用 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 來定義編碼 , 當下次 Dreamweaver 要去編輯的時候會不知道到底這一頁是甚麼編碼 , 這樣在輸入中文的時候有可能是 big5 , 於是我就想到一招 ....
這一招很簡單 , 看一下下面的程式碼
<?php $this->placeholder("NULL")->captureStart('SET'); ?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php $this->placeholder("NULL")->captureEnd(); ?>
<?php $this->placeholder("Zend_Layout")->captureStart('APPEND','head'); ?>
<link href="/css/sample.css" mce_href="/css/sample.css" rel="stylesheet" type="text/css" />
<title>網站名稱</title>
<?php $this->placeholder("Zend_Layout")->captureEnd(); ?>
My Content Here .....
這段程式碼是一個 view script 的範例 , 重點是利用 placeholder 物件 , 把不想要產生的東西通通丟到 placeholder("NULL") 就好了啦 , 上面的範例若結合 layout script 就不會看到重複的 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> , 這樣生成最後的 HTML 很正確且又可以方便在 Dreamweaver 下編輯 , 很棒吧 !