Cake的Scaffold非常酷
真酷,我一定要把它用在我的產品內! 大家剛看到都會這麼想,連我們到現在都還覺得它的確很酷, 但請認清一件事Scaffold…嗯…它畢竟只是Scaffold。 它是一堆可以讓你在專案開發初期快速建構雛形的工具。 但,它的可塑性不足。所以,當您發覺很想開發自己的邏輯和畫面時,就是放下Scaffold,開始寫一些程式碼的時候了。
Scaffold在應用程式開發初期非常好用。 一開始的資料庫連schemas都還沒確定,甚至可能整個被推翻,這對整個設計流程來說是很正常的事。 但這麼做的問題在:網頁程式開發者總討厭開發一些未來不使用的表單。 為了減低開發者在這方面的負擔,Cake就加入了Scaffold。 Scaffold會分析資料庫內的資料表,建立標準的新增、刪除和編輯鈕,標準的編輯表單和標準的檢視版面。 想在應用程式中使用Scaffold,只要在controller中加入$scaffold變數
<?php
class CategoriesController extends AppController
{
var $scaffold;
}
?>
有一個關於Scaffold的重點要提醒: 它會把所有以 _id 為結尾命名的欄位視為一組外部鍵,在底線前的字就是外部鍵關聯的資料表名稱。 舉個例子來說,如果有一個資料表含有一個欄位叫parent_id ,則這個欄位就代表是連到parent資料表的外部鍵。 若不是,那這時候就得將他換個名字,例如parentid。 再來,當資料表有一個外部鍵(例如title資料表有個欄位叫category_id),且己經把model的關聯做好(參考6.4關聯), 那麼顯示/編輯/新增的view會自動從外部鍵所指的資料表(此例為category)取出資料,放到選擇欄位的選項內。
<?php
class Title extends AppModel
{
var $name = 'Title';
var $belongsTo = array('Category'=>
array('className' => 'Category',
'foreignKey' => 'category_id')
);
}
?>
若要設定外部資料表所顯示的欄位,請指定外部資表內的$displayField變數。 下面的程式碼是指定要顯示Category裡的title欄位:
<?php
class Category extends AppModel
{
var $name = 'Category';
var $displayField = 'title';
}
?>
