Section 1 数据库配置

app/config/database.php 这个文件包含了所有的数据库配置。新安装的Cake是没有datebase.php这个文件的,你需要从database.php.default复制一份过来并重新命名,内容如下:

//app/config/database.php
var $default = array('driver'   => 'mysql',  'connect'  => 'mysql_connect',  'host'     => 'localhost',  'login'    => 'user',  'password' => 'password',  'database' => 'project_name',  'prefix'   => '');  //和大多数php程序一样,修改一下你的配置就ok了。

关于前缀要提醒一下:这里定义的前缀将会用在任何一处由Cake发起的对数据表的SQL操作中。你在这里定义过后不能再在其它地方重新定义它。假设你的服务器只给了你一个单独的database,它同样可以让你遵循Cake的表名约定。注意:对于HABTM(has-and-belongs-to-many),也就是多对多关联表,你只需要添加一次前缀prefix_apples_bananas,而不是prefix_apples_prefix_bananas。

CakePHP支持下列数据库驱动:

  • mysql
  • postgres
  • sqlite
  • pear-drivername (so you might enter pear-mysql, for example)
  • adodb-drivername

$default连接中的'connect'可以指定这个连接是否是persistent连接。参考database.php.default中的注释来决定采用何种方式。

Rails两大原则之一,就是约定大于配置,所以你定义的数据表名必须遵循下面的命名约定:

   1.  表名为英语单词的复数形式,例如"users", "authors"或者"articles"。注意与之对应的model对象则使用单数形式做名字。2.  表字段必须有一个主键字段叫'id'。(相信用过ORM工具的都明白个中道理吧)3.  如果你使用外键关联表,外键字段必须定义成这个样子:'article_id'。即关联表名的单数形式加上下划线然后id。其实也很好理解,并不需要特别记忆吧。4.  如果你定义了 'created' 'modified'这样的auditor字段的话,Cake会自动在操作的时候去填充。(译注:rails果然周全,hibernate里面的interceptor就那么容易的做到了)

你应该注意到,同样的还有一个$test的数据库连接配置项,这是考虑到一般开发数据库和生产数据库通常并不是同一个,所以你可以在程序通过var $useDbConfig = 'test'来切换数据库连接设置。

在你的model对象中,你可以通过这样的方式来添加任意多个附加数据库连接。

Section 2 全局配置

CakePHP的全局配置文件为/app/config/core.php。尽管我们非常讨厌配置文件,但是还是有些配置需要去做。文件中的注释对每一个配置项都有很详尽的说明。

DEBUG:这个选项定义了应用程序的Debug级别。设置为一个非零的数值Cake会输出所有的pr()和debug()函数调用,并且在Forward之前会有提示信息。设置为2或者是更高的数值,则会在页面底部输出sql语句。 
在debug模式下(DEBUG被设为1或者更高),Cake会输出错误自定义错误页面,例如 "Missing Controller","Missing Action"等等。在生产环境下(DEBUG被设为0),Cake输出 "Not Found"页面,你可以自行修改该页面(app/views/errors/error404.thtml)。

CAKE_SESSION_COOKIE: 这个设置可以设定你所希望使用的cookie名字。

CAKE_SECURITY:改变这个值标示了你所希望采用Session校验级别。Cake会根据你设定的值来执行Session超时,生成新的session id,删除历史session file等操作。可以选择的值如下所示:

   1.  high:最高安全级别,10分钟没有活动的session被置为超时,同时每一次请求都将生成新的session id2.  medium: 20分钟没有活动的session会被置为超时3.  low: 30分钟没有活动的session会被置为超时

CAKE_SESSION_SAVE:设置你的session数据储存策略:

   1.  cake:Session被保存在Cake安装目录下的tmp目录2.  php: Session被保存在php.ini文件设置的储存路径下3.  database: Session保存在$default数据库连接所指定的库中

Section 3 路由(Route)配置

"Routing"是一个纯PHP,类似mod_rewrite的机制,来实现URL和controller/action/params的自动映射。通过这个机制Cake可以拥有简洁且可配置的URL并且可以摆脱对mod_rewrite的依赖。当然使用mod_rewrite会让你的浏览器地址栏变得更加简洁。

Routes(路由)是独立的URL和指定的controller和action映射规则。路由规则在app/config/routes.php里面配置。示例如下:

<?php
$Route->connect (  'URL',  array('controller'=>'controllername',  'action'=>'actionname', 'firstparam')
);
?>  //1.  URL是一个正则表达式,表示你希望采用的URL格式
//2.  controllername是希望调用的controller的名字
//3.  actionname是希望调用的controller的action名字
//4.  firstparam是action的第一个参数名  

第一个参数之后的所有参数作为parameters被传递到action。

下面是一个简单的示例,所有的url都被定向到BlogController。默认的action为BlogController::index()。

//Route Example
<?php
$Route->connect ('/blog/:action/*', array('controller'=>'Blog', 'action'=>'index'));
?>  //A URL like /blog/history/05/june can then be handled like this:  Route Handling in a Controller<?php  class BlogController extends AppController
{  function history($year, $month=null)  {  // .. Display appropriate content  }
}
?>  

URL中的'history'通过Blog's route中的:action匹配。URL中通过*匹配的内容都被当作parameters传递到:action对应的方法中,就像这里的$year和$month。如果URL是/blog/history/05,则history()方法只会得到一个参数,05。

下面这个例子是CakePHP默认设置的一个route来为PagesController::display('home')配置路由。Home是Cake的默认首页视图,你可以在这个位置找到并修改它/app/views/pages/home.thtml。

//Setting the Default Route
<?php
$Route->connect ('/', array('controller'=>'Pages', 'action'=>'display', 'home'));
?>  

Section 4 高级路由配置:Admin路由与Webservice

在/app/config/core.php中还有那么一些高级选项可以供你使用,你可以利用它们使你的URL精巧地适应绝大多数情况。

第一个介绍的选项是管理员路由(admin routing)。假设你有两个Controller,ProductsController 和 NewsController,你肯定希望能有一些特别的URL给具有管理权限的用户来访问Controller中一些特别的action。为了保持URL的优雅和可读性,有些程序员相比 /products/adminAdd 和 /news/adminPost 更喜欢 /admin/products/add 和 /admin/news/post。

激活这个功能,首先你需要把/app/config/core.php中CAKE_ADMIN的注释去掉。CAKE_ADMIN的默认值是'admin',不过你可以修改为任何你喜欢的名字。但是你要记住这个名字,因为你需要在每一个admin action名字前面加上这个前缀,格式为admin_actionName()。

/admin/products/add          CAKE_ADMIN = 'admin'name of action in ProductsController = 'admin_add()'/superuser/news/post         CAKE_ADMIN = 'superuser'name of action in NewsController = 'superuser_post()'/admin/posts/delete          CAKE_ADMIN = 'admin'name of action in PostsController = 'admin_delete()'

使用admin route可以让你的业务逻辑非常井井有条。
注意!!并不是说使用了admin route同时Cake也替你完成了安全和认证,这些还是需要你自己来完成的。

类似的,你也能很快的为webservice建立路由。你需要将某个action暴露为webservice接口吗?首先,将/app/config/core.php中的WEBSERVICES选项设为'on'。和先前的admin一样,打开这个选项可以很方便的让带有如下前缀的action自动暴露为webservice接口。

  • rss
  • xml
  • rest
  • soap
  • xmlrpc

这样做的结果就是同一个action,拥有了两种不同的视图,一个是标准的HTML视图,一个是webservice接口。因此你可以非常简单的让你的程序拥有webservice的能力。

举个例子,我的程序中有这么一个逻辑,有这么一个action可以告诉用户当前办公室里有多少人正在通话。我已经有了一个HTML视图,不过我希望再提供一个XML格式的接口供我的桌面Widget(译注:就是类似yahoo widget一类的桌面小贴士)或者是掌上设备来使用。首先,我打开了webservice路由功能:

/app/config/core.php (partial)
/** *  The define below is used to turn cake built webservices *  on or off. Default setting is off. */  define('WEBSERVICES', 'on');  

然后我在controller中构建代码如下:

<?php
class PhonesController extends AppController
{  function doWhosOnline()  {  // this action is where we do all the work of seeing who's on the phone...  // If I wanted this action to be available via Cake's xml webservices route,  // I'd need to include a view at /app/views/posts/xml/do_whos_online.thtml.  // Note: the default view used here is at /app/views/layouts/xml/default.thtml.  // If a user requests /phones/doWhosOnline, they will get an HTML version.  // If a user requests /xml/phones/doWhosOnline, they will get the XML version.  }
}
?>  

Section 5 自定义反射配置(可选)

Cake的命名约束真的是非常不错,你可以命名model为Box,controller为Boxes,于是所有的问题都解决了。但是考虑到有的情况下(特别是非英语国家)这样的命名约束不如你意的话,你可以通过自定义反射配置来满足你的需求。

/app/config/inflections.php,这里定义了Cake的一些变量,你可以来调整名字单复数约定等。你需要详细阅读文件中的注释,并且最好具备正则表达式知识,否则请误随便修改该配置文件。

来源:http://www.1x3x.net/cakephp/configuration.html

cakephp 1.3 配置CakePHP相关推荐

  1. windwos cakephp mysql apache_配置Apache2.2+PHP5+CakePHP1.2+MySQL5运行环境

    1. 安装配置apahce 安装配置apache是比较简单的, 跟着安装向导一步步往下走就能搞定.最多就是在配置端口的地方需要注意一下,如果已经安装了其它web服务器占用了80端口,那记得配置的时候选 ...

  2. 一步一步学习之安装与配置 CakePHP (一)

    我是一个菜鸟等级的程序员,我将教大家一步步的学习 CakePHP 框架,在表述中可能有错误,希望大神们指出错误,觉得我讲得好的可以表示支持下,遇到问题了可以留言,我们一起来探讨,闲话少说,上干粮.   ...

  3. cakephp mysql_无法在CakePHP中使用MySQL

    这是我第一次安装框架,我很无能为力. 我在OSX 10.7上,我将cakephp框架加载到/ Library / WebServer / Documents / cakephp中,我已经能够加载测试页 ...

  4. 【CakePHP】几个CakePHP知识点

    如何禁止布局? 如果需要禁止布局功能的动作或控制器比较多的话,那么可以在控制器中统一设置autoLayout为false,如果只是个别的模板的话,那么最好是直接在模板文件里设定$this->au ...

  5. CakePHP 2.x CookBook 中文版 第二章 安装

    安装 CakePHP 很容易安装.最小安装只要有一个 web 服务器和一份 Cake 的副本,就足够了!本手册主要聚焦于在 Apache 上安装 Cake(因为 Apache 最通用), 你也可以在 ...

  6. CakePHP 2.x十分钟博客教程

    1. CakePHP2十分钟博客教程(一):安装与配置 Cakephp 2.0依然保持着Cakephp框架的各种优良传统,其中之一就是非常易于新手入门,几乎不做任何复杂的配置即可使用.非常可惜的是,C ...

  7. CakePHP:链接地址问题(不用mod_rewrite,IIS)

    实现的友好的urls,固然很好,但是有些场合因为服务器的原因等,我们无法使用重写规则,特别是当我们用CakePHP开发应用产品的时候,必须 考虑到用户不同的部署环境,所以必须考虑到不用urls重写,网 ...

  8. CakePHP系列(一)----CakePHP3.4一览

    一.CakePHP一览 CakePHP旨在使常见的Web开发任务简单,容易. 通过提供一个一体化工具箱,您可以开始使用CakePHP的各个部分一起或单独工作. 本概述的目标是介绍CakePHP中的一般 ...

  9. cakephp视图用php文件,cakephp

    开发 编辑 必要条件 最好是带模块的,但不是必要条件. 或更高版本,没错,可以在php4或是5下面运行. 技术上来说,数据库不是必需的,但我们设想每个应用都会用到数据库,支持大部分数据库:: 3.Fi ...

最新文章

  1. 为何BERT在 NLP 中的表现如此抢眼?
  2. Oracle 12C 新特性之级联truncate
  3. 正则表达式,以前总结的,大不分来择自网上
  4. creator找不到编译器 qt_VS2017直接使用QT库创建程序
  5. Mysql基本用法-left join、right join、 inner join、子查询和join-02
  6. IIS应用程序池相关问题及连接池已满的解决方法
  7. mysql 表结构 增删改查_mysql学习【第3篇】:数据库之增删改查操作
  8. 移动Web体验月报(6月):MIP 核心代码升级,增加基于 Vue 开发能力
  9. matlab 多项式表达,Matlab多项式运算
  10. ios 优化html表单提交,iOS 使用AFNetworking的form表单请求
  11. 自己编译vim,解决Ubuntu 12.04 terminal里执行gvim会挂起的问题
  12. MyEclipse安装插件的几种方法
  13. linux 程序或服务开机自启动
  14. Windows10 64位系统安装EPLAN P8 2.6教程
  15. 羊毛之家,青龙脚本,几乎全部可用
  16. 《剑指offer》66道算法题合集(java实现)
  17. 冲击IPO:达达的负“重”上市之路
  18. fpga学习——zynq图像处理中的DVP流接口封装
  19. 面试备战笔记2019
  20. 洛谷 P5560 【[Celeste-B]Golden Feather】

热门文章

  1. 哥德巴赫猜想(信息学奥赛一本通-T1157)
  2. 信息学奥赛C++语言: 扫雷游戏
  3. 信息学奥赛C++语言: 趣味整数3(回文数)
  4. Written English-书面-一般过去时
  5. 29 PP配置-生产车间控制-工序-定义可用性检查控制
  6. java停启was集群_shell脚本实现weblogic 节点启停,应用部署
  7. wifi协议_物联网网关智能家居工业4G路由器通用的物联网WiFi模块 MQTT/TCP协议 Linux嵌入式...
  8. python处理一个文件夹下的所有文件并保存在新的文件夹
  9. SAGAN生成更为精细的人脸图像(tensorflow实现)
  10. 如何查找 MySQL配置文件 my.ini (my.conf)的位置(案例篇)