Scaffolding 脚手架
Section 1 Cool!Cake的脚手架
Cake的脚手架真的非常酷,以至于你会希望将他用到你的生产环境下。我们也认为它非常的酷,但是请意识到脚手架再好也还是脚手架。它只是一大捧素材供你在项目起始阶段能够迅速的搭起整个项目的架子。所以,当你发现你需要实现自己的业务逻辑的时候就是该拆掉脚手架的时候了。
对于web应用项目,由脚手架开始项目是非常不错的办法。早期的数据库设计通常是经常会变动的。有这么一种趋势,web开发人员非常厌恶创建一下根本不会实际使用的页面。为了减少开发人员的这种压力,Cake内置了脚手架功能。脚手架会根据你当前的表结构创建基础的CRUD页面。在你的controller中使用脚手架只需要一行代码,加入一个变量就ok。
有一个非常重要的事情:脚手架中,要求每一个外键字段都必须以name_id这样的形式命名。因此,当你多级目录结构的时候,你可能会有一个字段叫parent_id,这样的时候你就不能如此命名了,因为根据约定,它会去映射parent这个model,而实际上是不存在这个model的,所以最好命名为parentid。但是如果你是有一个外键关联另一个model的话(例如:titles表中有category_id作为外键),你首先要确保正确的处理关联对象(参见 正确理解关联关系, 6.2),在show/edit/new这3个视图里面会自动生成一个下拉框来展示/选择category信息。可以通过设置model中的$displayField变量来取舍那些外键字段是需要显示的。具体示例如下:
Section 2 自定义脚手架视图
如果你希望脚手架的页面有一些自定义的元素,你可以自己修改模版。我们仍然不建议你在生产环境下使用脚手架视图,不过一定的自定义将会对于原形构建有这非常大的帮助。
如果你不希望修改默认提供的脚手架视图,你可以自己提供这些模版:
自定义单个Controller默认脚手架视图
PostsController的自定义脚手架视图放置位置如下: /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
自定义全局脚手架默认视图
全局默认脚手架视图放置位置如下: /app/views/scaffold/index.scaffold.thtml /app/views/scaffold/show.scaffold.thtml /app/views/scaffold/edit.scaffold.thtml /app/views/scaffold/new.scaffold.thtml
当你发现你需要实现自己的业务逻辑的时候也就是该拆除脚手教的时候。
Cake中code generator有一个非常有用的功能:Bake。Bake可以为你的应用生成一个基础的架子供你填充业务逻辑。