首頁 > ZEND framework, 網頁設計 > ZF in ∞ days –> day 2 –> ZF not just APIs

ZF in ∞ days –> day 2 –> ZF not just APIs

2010年5月29日  瀏覽次數 : 2,126

很多人都接觸到 ZEND framework 都是因為 GOOGLE API ,當你要使用日曆或是地圖等等 API 時,應該很容易就會使用到 ZEND 提供的相關 GOOGLE API ,甚至有很多人認為 ZEND FRAME 有很多 API 寫得不錯,諸如 DB 或是 AUTH 及 ACL ,因此甚至透過 Library 將 ZF 匯整到 CI 這套 FRAMEWORK ,感覺很像士林夜市賣的大餅包小餅,不管怎麼說,好吃就好嘛。

image 圖片來源 : Noam King’s Blog

既然 ZF 並不只是 API 的集合,因此最重要的是我們須要使用他的 MVC 的架構,來協助我們有規劃性的架構出我們的 WEB 應用程式,而不是像我們的辦公桌旁邊的抽屜,有的人的抽屜可能放了參考書,有的人放文具,但是更多人放的是零食。如果程式規劃時沒有標準,當想要找出檔案存放位置時可能要先去將一疊開發說明書翻完才會了解程式的規劃。

MVC 是一種設計模式,其想要做的是幫我們將程式碼區分為 Model ( 資料 ), View ( 檢視 ), Controller ( 邏輯控制 ) , 最主要的目的是當我們有多隻程式共用到 DB 資料時,可以將取得 DB 的程式碼放在 Model ,這樣可以讓程式的再用性更高。

不過由於我們不是在解釋設計模式,因此如果您對於設計模式有興趣,在這邊可以推薦你們兩本書,深入淺出設計模設,以及大話設計模式,或是您可以參考鐵神出版的 smarty 網頁樣板。

首先我們先依照 day1 的步驟建立一個 day2 的專案。

建立完成後我們會得到一個如下的架構

image 稍微解釋一下各個資料夾的程式分類

application // 專案應用程式的資料夾
configs // 應用程式設定檔或是你需要對於網站的設定
controllers // 應用程式控制放置處
models // 應用程式資料處理放置處
views // 應用程式展示放置處
scripts // 展示程式碼
error // 對應 controllers 內的 ErrorController.php
index // 對應 controllers 內的 IindexController.php
library // 存放共用函式庫
public // 網站的 root ,通常會在內建立 img css js 等資料夾

因為呢,我們在 day1 的練習已經成功的建立一個官方專案建立時會建立的 index ,因此呢我們這次要另外開一個 Controller 頁面來做處理。

 

STEP 1 :

在 day2 專案上按右鍵,選取 NEW / Zend framework item

image 

選擇 Zend Controller ( 兩者均可~ 在這裡我先選 Zend Tool based )

選用 Zend Tool 時會自動建立該程式的 View 檔案

image

輸入 GuestbookController.php

注意 : 如果該頁面為 Controller 該檔名與CLASS名稱 開頭必須要大寫

如果剛剛選的是 Template Base 時,在檔名的結尾必須為 Controller

例如 :  合法 V MyablumController.php  不合法 X myAblum.php

image

STEP 2 :

當 Controller 建立完成時,結構除了會多出一支 GuestbookController.php ,並且在 views/scripts 資料夾內也會同時出現 guestbook ( 相同於 GuestbookController 並且沒有 Controller 字眼 ) ,而該資料夾內也會出現一個 index.phtml 檔案。

該 index.phtml 注意副檔名為 .phtml ,為預設的 indexAction 所處理的 View 檔案

image

STEP 3 :

接著在瀏覽器輸入 http://localhost/day2/public/index.php/guestbook

就會取得執行畫面

image

運作原理 :

當瀏覽器輸入 http://localhost/day2/public/index.php/guestbook

會先從第一進入點 http://localhost/day2/public/index.php 取得第一個參數

通常第一個參數是 Controller 名字 ,第二個參數是 Action 的名字

因此本範例將會取得 guestbook 的 controller ,但是因為我們沒有指定 Action ,預設就會去讀取 indexAction ,並且顯示 index.phtml 的內容。

STEP 4 :

接著我們要建立一個新的 ACTION ,我們先打開 GuestbookController.php

並且建立一個 getallmessageAction 的公開 function

注意 ! 如為 Action ,規則必須要為 Action 結尾(大小寫相同),並且在 Action 之前不可有大寫。

並且我們將 VIEW 設定一個 TITLE 的變數 $this->view->title = "今日所有留言" ;

image

STEP 5 :

我們再為這個 GuestController.php 建立一個 View 的頁面

在專案上 NEW / Zend Freamework Item / Zend View

image

image

這裡要注意必須要將 Folder 指向正確的位置,並且呢檔名也必須要與 Action 前的名字相同

image 

接著我們打開剛剛建立好的 VIEW

並且輸入 <h1><?php echo $this->title ; ?></h1>

讓他印出我們在 Controller 所設定的變數

image

STEP 6 :

在瀏覽器輸入 http://localhost/day2/public/index.php/guestbook/getallmessage

其代表我們執行 guestbook ( Controller ) 內的 getallmessage ( Action )

image

畫面上可以看到程式已經正確執行,並且我們在 Controller 指派的變數也可以正常顯示

(如果出現亂碼請更改顯示語系)

STEP 7 :

接下來我們再開啟 GuestController.php 我們要再加入一個 updatemsgAction ,並且設定這個 Action 並不會去載入預設的 VIEW

$this->getHelper(’viewRenderer’)->setNoRender();

image

STEP 8 :

最後我們在網址列輸入 http://localhost/day2/public/index.php/guestbook/updatemsg

其代表我們執行 guestbook ( Controller ) 內的 updatemsg ( Action )

image

 

第二天到這裡就差不多啦,今天我們已經把 ZF 基礎的 C 與 V 實作完成。

是不是很簡單哩,下一站就可以進入 M 囉~~

Random Posts

Loading…

:: 把這篇好文推到書籤網站與更多人分享吧 ::
  • funp
  • Hemidemi
  • YahooKimo
  • Google
  • udn
  • Haohao
  • Live

相關文章 :

Ausir ZEND framework, 網頁設計 , , , , , ,

  1. 本篇文章目前尚無任何評論。
  1. 本篇文章目前尚無任何 trackbacks 和 pingbacks。