====== 深入MVC架構 ======
**複習:**
經過[[askeet_2|昨天]]的學習,你已學會如何從一個關係的資料模型產生物件模型,然後產生簡單的物件操作,BTW,昨天產生的源碼可以在 askeet SVN 源碼倉庫得到:
http://svn.askeet.com/
=====今天的目標 =====
是設計一個比較好看一點的外觀,將問題的陳列設為首頁,秀對這個問題有興趣的人,多加入一些測試資料到資料庫,沒有要做很多事,多的是要讀通及理解。讀這個教程,你將會熟悉symfony專案及程式,模組和動作的概念,這也在symfony book的[[http://www.symfony-project.com/content/book/page/controller.html|controller]]章節。
=====The MVC model=====
今天將會深入探討[[http://en.wikipedia.org/wiki/Model-view-controller|MVC 架構]],這是什麼意思?這個源碼是藉由多個不同的檔來產生,有資料維護的代碼一會和網頁是切開的,它應該在模型裏(大多時候是在 askeet/lib/model/)有關於展示的碼,應該在展示層裏,在symfony,展示層會依賴樣板檔。(例如askeet/apps/frontend/modules/question/templates/)和設定檔。最後是把兩者結合起來,把網站的邏輯用 PHP 寫出來是控制層。在 symfony ,會了某一特定網頁的控制層是叫行動 action (行動在askeet/apps/frontend/modules/question/actions/)。
你可以在 symfony book的[[http://www.symfony-project.com/content/book/page/mvc.html|MVC实施]]章節知道更多關於模型在 MVC 的實作。
今天,我們程式的外觀會有一點點的改變,我們將手動調整一大堆不同的檔案,不要覺得痛,
因為分層的檔案和源碼在不同層的分離不久將會變得清楚分明且好用。
===== 改變外觀 =====
在 [[http://en.wikipedia.org/wiki/Decorator_pattern|decorator]]這個設計模式的程式中,被動作 action 呼叫的樣板 template 會整合進一個更多的全域樣板 global template ,或外觀 layout 。換句話說,這外觀也包含了界面裏所有的不變的部分,它裝飾了行動的結果。打開預設的外觀 ,在askeet/apps/frontend/templates/layout.php裏,然後按造底下的方式修改