CakePHP中文手册【翻译】-配置
配置
第1节
数据库配置
app/config/database.php 文件是所有数据库配置放置的地方。一个新的安装是没有database.php的,因此需要一个database.php.default文件的拷贝。一旦你拷贝了一份,将它重新命名:
app/config/database.php
var $default =
array('driver' => 'mysql', |
在你的应用程序中,替换缺省的数据库链接信息。
对于prefix有一个说明:这里输入的字符串对于任何SQL调用(当对表工作时,Cake完成对你的数据库的任何SQL调用)都是预先设置好的。这里仅需要定义一次,因此你没有必要在其他地方指定它。如果你在一个提供单个数据库的主机上,那么它也允许你遵循Cake的表命名规则。注意:对于HABTMjoin表,你仅需要增加前缀一次:prefix_apples_bananas而不是prefix_apples_prefix_bananas。
CakePHP支持下面的数据库驱动:
1. mysql
2. postgres
3. sqlite
4. pear-drivername (例如,你可以输入enter
pear-mysql)
5. adodb-drivername
在$default的的连接里,‘connect’关键字允许你指定数据库连接是否是持久的。阅读database.php.default的注释,它帮助你指定你的数据库创建的连接类型。
你的数据库表也应该遵循下面的规则:
1. Cake使用的表名应该是复数的英文单词,例如’users‘,“authors“或”articles”.注意相应的model是单数名。
2. 表必须有一个命名为’id’的主键。
3. 如果你打算关联表,使用外键,例如:'article_id'。表名是单数的,紧跟着是一个下划线,接下来是’id’.
4. 如果在表中如果包含一个'created' 和/或 'modified',适当的时候Cake会自动增加(内容)[1]。
你也会注意到database.php文件包含$test连接。填写这个配置(或者增加其他类似格式的配置),并在应用程序使用它,可以为:
var $useDbConfig = 'test';
内置在你的一个model中,你可以以这种方式增加任何数量的附加连设置
第2节
全局配置
在app/config/core.php里可以发现CakePHP的全局配置。当我们真正不喜欢配置文件时,它不得不完成。这里你可以修改一些配置,这些设置的每一个备注都可以在core.php文件的注释里找到。
DEBUG:当你build它时,为它设置不同的值能帮助你调试应用程序。将它设置为一个非零值,会迫使Cake打印pr()和debug()函数调用的结果,并且自动停止下一步的即时消息(Flash
Message)。设置为2或者更大的值会将SQL语句在页面的底部打印出来。
同时,在debug模式下(这里DEBUG设置为1或者更大值),Cake将显示特定生成的错误页面,例如,“Missing
Controller”,” Missing Action”等。在产品模式下(DEBUG设置为0),Cake显示”Not Found”的页面,此页面年可以在app/views/errors/error404.thtml重写。
CAKE_SESSION_COOKIE:将此值修改为你打算在Cake应用程序中用户对话的cookie名。
CAKE_SECURITY:修改此值来指定你想要的对话检查等级。Cake将session过期,生成一个新的session
id,以及删除原来的session文件,这些文件基于你在这里提供的设置。可能的值有:
1. high:非活动10分钟后Session过期,而且在每次请求时将重新生成Session id。
2. medium:非活动20分钟后Session过期
3. low:非活动30分钟后Session过期
CAKE_SESSION_SAVE:指定你想怎样保存session数据,可能的值为:
1. cake:在Cake安装目录下的tmp/保存Session数据。
2. php:按php.ini定义的方式保存Session数据。
3. database: 将Session数据保存到‘default’键定义的数据库连接。
第3节
“路由”是一个精简的类似mod_rewrite的纯PHP,它可以将URL映射为controller/action/params。Cake增加了它,让URL变得更加可配置,并使我们脱离mod_rewrite的要求。即使这样,mod_rewrite的使用会让你的地址栏变得更加整洁。
路由是一个单独的规则,它将符合的URL映射为特定的controller和action。可以在app/config/routes.php文件里配置路由。他们可以像下面一样建立:
路由模式
<?php |
这里:
1. URL是你打算映射的常规Cake URL。
2. controllername是你打算调用的controller名,
3. actionname 是你打算调用的controller的action名,
4. firstparam是你已经指定的action的第一个参数值.
跟着firstparam的任何参数同样可以作为参数传给controller action。
下面的例子将/blog下的所有URL加到BlogController。缺省的action是BlogController::index().
Route实例
<?php |
/blog/history/05/june的URL可以像下面这样处理:
在Controller中的Route处理
<?php |
URL的'history'和Blog的路径的:action匹配。*匹配的URL元素作为参数传给活动的controller处理方法,所以是$year和$month.如果调用/blog/history/05,history()仅有一个参数传入,05.
接下来的例子是一个CakePHP缺省的路由,使用它能为PagesController::display('home')创建一个路由。Home是一个可以通过创建文件/app/views/pages/home.thtml来重写的视图。
设置缺省的Route
<?php |
第4节
高级路由配置: 管理路由和web
service
在/app/config/core.php里,你可以利用一些设置来组织你的应用程序,并精心为你和你的用户打造最有意义的URL。
其中的第一个就是管理路由(admin routing)。假如应用程序有一个ProductsController,并也有NewsController,你可能想创建一些特定的URL,以致那些拥有管理员权限的用户能够访问这些controller里的某些特定action。为了保持URL好看,并易于阅读,对于诸如/products/adminAdd
和 /news/adminPost一样的URL,有些人更倾向于/admin/products/add 和 /admin/news/post
为了做到这样,首先,取消/app/config/core.php文件的CAKE_ADMIN行的注释。CAKE_ADMIN缺省值是‘admin’,你也可以将它修改为你想要的任何东西。牢记此字符串,因为你需要为controller的管理员操作预先准备。因此,在此情况下,管理action会重命名为admin_actionName().这里有一些期望的URL样例,可能的CAKE_ADMIN,以及controller action设置:
/admin/products/add CAKE_ADMIN = 'admin'
ProductsControlle的action名 = 'admin_add()'
/superuser/news/post CAKE_ADMIN = 'superuser'
NewsController的action名 = 'superuser_post()'
/admin/posts/delete CAKE_ADMIN = 'admin'
PostsController的action名 = 'admin_delete()'
|
使用管理路由,允许你继续组织你的逻辑,同时也使路由更加容易完成。
请注意打开的管理路由或者使用它们,不会打开任何身份验证或安全,需要你自己实现他们。
与此类似,你可以打开Cake的 web service路由,这样也会更加容易。你想让一个controller
action作为web service吗?首先,将/app/config/core.php的WEBSERVICES设置为‘on’.这会打开某些自动路由,他们与某些管理路由类似,除了打开一些路由前缀外:
1. rss
2. xml
3. rest
4. soap
5. xmlrpc
它做的事情就是允许你提供一个可选择的视图,这些视图会自动在/rss/controllerName/actionName
或 /soap/controllerName/actionName中可用。它允许你创建一个单独的action,此action可能有2个视图:一个是为了normal
HTML查看者,另一个是web service使用者。这样,你就可以简单的利用web service使一些应用程序的功能变得可用。
例如,在应用程序中有一些逻辑,此应用程序告诉在我办公室电话旁边的那些用户。对于此数据,我有一个HTML视图,但是我又想以XML的格式提供,这样它才可以用在桌面程序上,或者手持设备的应用程序上。首先我需要做的是打开Cake web
service路由:
/app/config/core.php
(部分)
/** |
接下来,我可以在contoller里加入逻辑,一般如下:
messages_controller.php
<?php |
第 5章
(可选) Custom Inflections Configuration
Cake的命名规则真的非常优美-你可以定义你自己的model,你自己的controller,任何事情都可以。但是也存在一些特例(特别是对非英语的朋友),你可能会碰到某些情况,Cake
inflector(类为复数,单数,camelCases以及下划线)不会按照你想的那样工作。如果Cake不认识你的Foci和Fish,那么你需要对custom
inflections configuration文件的编辑。
在/app/config/inflections.php里,有一系列Cake变量,你可以用来调整cake的类名的复数,单数,连同正在定义术语。这些术语不会无规律的改变(对于没有入门的caker来说,像Fish和Deer)。
按照文件里的说明做出调整,或者取消他们在文件中的注释作为样例。在深入之前,你可能需要知道一些关于正则表达式的知识