cakephp筆記——view層
一個view是一個頁面模版,通常按action的名字命名。例如,PostsController::add的view位於/app/views/posts/add.ctp。Cake view是非常簡單的PHP檔案,因此你可以在其中使用任何PHP代碼。
Layouts 布局
一個layout(布局)包含了所有包裹在view之外的表現代碼。Layout檔案都放在/app/views/layouts目錄裡。你可以重寫一個預設的layout來取代位於/app/views/layouts/default.ctp的Cake預設layout。一但建立了新的預設layout,當頁面render的時候controller view的內容會被替換到預設layout中。只要需要,你可以隨意為你的Cake網站建立任意數量的layout,只要把他們放在app/views/layouts目錄,並且在你的controller action裡邊使用controller的$layout變數或者setLayout()方法來切換layout。
Elements 元素
element元素的產生主要是為了代碼或者是代碼塊的重用。許多應用程式都會有一些在各個頁面見不停重複的表現層代碼,有時他們只是在layout裡的不同地方。Cake可以協助你複製網站中的某些區塊,如果需要的話。 我們將這些可重用的頁面區塊稱為Element(元素)。廣告,協助框,導覽列,菜單和插圖都被Cake實現成為element。一個element其實可以看作是可以包含在其他view裡邊的mini-view。所有element都生活在/app/views/elements目錄下,並且副檔名為.ctp。
預設情況下,element訪問不到任何資料。想讓它具有對資料的訪問權,你需要將資料放在數組裡傳遞給它,並不要忘了為這些資料帶上名字(鍵-值對數組)。
無參數地調用一個element
- echo $this->renderElement('helpbox'); ?>
調用一個element,並傳入包含資料的數組
- echo
- $this->renderElement('helpbox', array(
- "helptext" => "Oh, this text is very helpful.")
- );
- ?>
在element檔案裡,所有傳入的變數都可以通過他們在參數數組裡的鍵名來使用(有點類似於在view裡邊使用controller用set()設定的變數)。在上邊這個例子中,/app/views/elements/helpbox.ctp檔案可以使用$helptext變數。當然,如果傳遞一個數組給element會包含更多的資訊。element使view具有更佳的可讀性,而把render重複的element的部分放在對應的element檔案中。當然它們也可以協助你重用網站中的內容區塊。