通过使用 Bake(CakePHP 代码生成器),可以生成一个包含 Scaffolding 功能和相关视图的控制器。
在 CakePHP V1.1 中,Bake 是一个直接调用的 PHP 脚本。在 CakePHP V1.2 中,Bake 功能已经转移到了 Cake Console 中,在本教程后面您会逐渐熟悉 Cake Console。将路径 /webroot/cake/console 添加到环境的 PATH 变量中,可以简化操作。设置这个变量之后,就可以直接调用 Cake Console 而不需要指定路径信息。这种做法并不是必需的,本教程假设不这样做。另外,应该从应用程序的 app 目录(在本示例中是 /project/app)运行 Cake Console,否则 Cake Console 会认为您打算对新的应用程序执行操作。
在继续执行操作之前,请制作现有 app 目录的拷贝。Bake 将覆盖 products 控制器,而且当操作包括关键字 “overwrite”(或者 “copy”、“delete”、“format” 或 “voodoo”)时,应当经常备份文件。如果遇到问题,请确保 php 位于环境的 PATH 变量中。
对 products 控制器使用 Bake:
要想使用 Bake,应该使用 cd 命令切换到 /webroot/app 目录并启动 Cake Console:
php ../cake/console/cake.php bake
已编写的模型应当不会有问题,所以让我们开始编写控制器,但是如果不放心,用bake生成Model也是很容易的~。
下面绍介下控制器的Bake方法:
按 C 键选择控制器。Cake Console 将查看目前操作的应用程序,并列出可以运行 Bake 的控制器。我们要对 products 控制器运行 Bake,选择它的控制器编号x。Bake 将询问您是否希望以交互方式(interactive)构建控制器。目前,按 N 键让 Bake 自己做出所有决定,但是稍后您应当尝试以交互方式构建一个控制器,感受一下 Bake 的其他功能。接下来,Bake 会询问是否希望包含一些基本的类方法。按 Y(因为我们使用 Bake 的目的就是获得这些代码)。接下来,Bake 会询问是否希望创建用于管理路由(routing)的方法。按 N(目前不需要这些方法)。Bake 应当会通知您它创建了文件 /app/controllers/tables_controller.php,并询问是否希望创建一些单元测试文件。目前可以跳过它们。完成操作之后,会回到 Bake 菜单。
大功告成!退出 Cake Console,打开 app/controllers/products_controller.php,看看 Bake 为您实现了什么功能……