CakePHP中文手册【翻译】-介绍 Scaffolding

Scaffolding(脚手架)

1

CakeScaffolding非常酷

非常酷,以至于你想在产品中使用它。现在,我们认为它酷,但是请意识到scaffolding是好,但也仅是scaffolding而已。在一个项目的初期,为了开始进行,它是一捆你真正想快点丢弃的材料。这并不意味着它十分灵活。因此,如果你发现你自己真正想定制你的逻辑和视图的话,是时候将你的scaffolding收起来,然后去写代码。

在开始着手开发一个Web应用程序的早期,Scaffolding是一种好的方法。早期的数据库schema不确定,而且一直在变,在设计过程的初期,这也是非常正常的。它有一个不足:一个web开发人员痛恨创建那些永远得不到真正使用的表单。为了降低开发人员的难度,scaffolding已经在Cake里包含。Scaffolding会分析你的数据库表,并会为之创建标准的增加(add),删除(delete,编辑(Edit)按钮,和标准的表单来进行编辑,也提供标准的视图来检查数据库的一个单项。为了在程序中增加scaffolding,在controller加入$scaffold变量

<?php
class CategoriesController extends AppController
{
    var $scaffold;
}
?>

Scaffolding需要注意的一件重要事情是:它期望任何以_id结尾的字段都是某个表的外键,此表的表明有一个下划线的前缀。因此,如果你有一个嵌套的目录,你很有可能会有一个parent_id列。在本发行版本中,称它为parentid可能是最好的。同时,当在你的表中(例如标题表有category_id)有一个外键,并且你已经恰当的关联到model(参看理解关联,6.2),在显示/编辑/新建的视图里,一个选择框会自动出现,此选择框包含来自外表(category)的某些行。为了选择那个外表的字段需要显示,设置外模型(Foreign model)的$displayField 字段。

<?php
class Title extends AppModel
{
    var $name = 'Title';

    var $displayField = 'title';
}
?>

 

2

定制Scaffold 视图

如果你正在在你的scaffold视图里寻找一些不同点,你可以自己创建他们。我们仍不建议在产品中使用这项技术,但是对原型迭代来说,这样的定制可能会非常有用。

如果你想修改scaffolding视图,你需要提供你自己的:

单个ControllerCustom Scaffolding View

PostsControllerCustom scaffolding view可以如下:

/app/views/posts/scaffold/index.scaffold.thtml

/app/views/posts/scaffold/show.scaffold.thtml

/app/views/posts/scaffold/edit.scaffold.thtml

/app/views/posts/scaffold/new.scaffold.thtml

 
 

整个应用程序的Custom Scaffolding View

所有controllerCustom scaffolding view可以如下:
/app/views/scaffold/index.scaffold.thtml
/app/views/scaffold/show.scaffold.thtml
/app/views/scaffold/edit.scaffold.thtml
/app/views/scaffold/new.scaffold.thtml
 

如果你发现自己此时想修改controller逻辑,那么是时候从你的应用程序中去掉scaffolding,并开始构建它。

你可能发现一个有用的特性,这个特性就是Cake的代码生成器:BakeBake允许你生成一个版本的scaffold代码,你可以将代码移走,以便你可以修改和定制应用程序需要的(功能)。

posted @ 2006-11-03 21:44  张太国  阅读(...)  评论(...编辑  收藏