通常我們真正在瀏覽器上看到的版型,是由每個controller的layout及action對應的版型組合出來的。
Layout:你可以打開album.thtml(/home/photo/app/views/layouts/album.thtml),你會發現layout只是一個外框,它並沒有處理任何有關資料呈現的方式,說明一下,
裏面的程式碼:
echo $title_for_layout?> à 這個會對應到controller中pageTitle這個變數,你可以在controller中,修改它。
echo $content_for_layout ?> à 這個是對應到每個action使用的view,也就是你資料呈現的地方。
echo $this->renderElement('header');?> à 這個是有關於elemenet的機制,先簡單來說,通常一個網站所有版面中,會有許多相同的地方(如: header及footer),這時候我們就可以分離出來,讓網站的版型來共同即可。
Action的版型:CakePHP的目錄擺法:app/views/controller/action.thtml (ex:/home/photo/app/views/ab/view.thtml),舉例來說,我們的Ab這個controller中的view這個aciton,它對應到的版型就應該是在/home/photo/app/views/ab/view.thtml。而view.thtml裏面的變數,都是來自當初在contoller中,$this->set()來的。
Element:如同剛剛說的,通常一個網站的網頁,會有許多相同的部分,我們可以把它們分離出來,日後維護比較方便。你可以把這些分離出來的版型放在app/views/elements底下。要使用的時候,使用$this->renderElement()就可以了。
沒有留言:
張貼留言