一個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 <?php echo $this->renderElement('helpbox'); ?> 調用一個element,並傳入包含數據的數組 <?php 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文件中。當然它們也可以幫助你重用站點中的內容區塊。