另外,CakePHP的wiki已经失效,取而代之的是一个名为bakery的网站。原文中引用的wiki的链接也都已更新到了bakery上。
快速创建静态页面
我想建立几个页面,它们仅包含静态数据,使用默认layout,不需要任何model。最初我试图创建一个controller并为每个静态页面定义一个action。但这种方法很笨拙,也不适合快速创建静态页面。
实际上只要使用pages controller就可以做到——只要在 views/pages 文件夹下创建一个view,就可以通过 /pages 来访问。例如,我创建了 /views/pages/matt.thtml ,就可以通过http://www.example.com/pages/matt 来访问。
改变静态页面的标题
使用pages controller时如果想改变页面标题,只需在view中加入以下代码:
<? $this->pageTitle = 'Title of your page.'; ?>
在静态页面中向layout发送数据
如果需要向layout传递数据(例如表示导航栏中哪个部分应该高亮显示的变量),可以在view中添加下面的代码:
<? $this->_viewVars['somedata'] = array('some','data'); ?>
这个数组就可以在layout中通过$somedata来访问。
快速创建后台管理
如果你需要创建后台管理程序,并且希望所有管理action都位于某个特定文件夹下,那么打开 config/core.php 并将下面这一行的注释去掉:
define('CAKE_ADMIN', 'admin');
这样所有以"admin_"开头的action都可以通过 /admin/yourcontroller/youraction 来访问。例如,如果在posts controller中创建了名为"admin_add"的action,那么可以通过 www.example.com/admin/posts/add 访问这个action。这样就可以方便地为admin目录设置密码以避免他人随意访问。
查看后台执行的SQL语句
只需改变config/core.php中的DEBUG常量,即可看到后台执行的SQL语句。0为产品级,1为开发级,2为完整调试SQL,3为完整调试SQL并显示对象数据。我通常将DEBUG设置为2,这样每页的底部会显示出一个包含SQL调试信息的表格。
如果页面底部添加的表格会破坏页面布局(特别是使用Ajax获取页面并显示到页面中间而不是底部时),你可以在CSS中添加以下代码以隐藏调试信息:
#cakeSqlLog { display: none; }
这样既能保持页面布局,又可以通过查看源代码来看到调试信息。当然最后发布网站时别忘了将调试级别改回0。
获取丰富的开发文档
别总是盯着手册。wiki和API也是无价之宝。wiki中的开发指南十分有用,而API文档初看起来比较难,但你很快就会发现这里的信息对你创建CakePHP网站十分重要。
使用bake.php
Bake是个命令行PHP脚本,可以根据数据库自动生成model、controller和view。在开发的最初阶段,我强烈推荐使用scaffolding让你的原型程序跑起来。但如果你清楚地知道scaffolding不合适,我推荐你使用bake。bake会生成所有的文件并保存到磁盘上,以便你随意修改。这样能节省创建关联、view、基本的CRUD crollder操作的重复工作。







