基本概念

Section1 简介

本章节篇幅很短,简单的介绍一下MVC概念以及在cake中是如何实现的。如果你对MVC模式很陌生,这个章节将会非常适合你。我们由 常规的MVC概念开始我们的讨论,然后用我们的方式在CakePHP中使用MVC模式,并且展示几个简单的示例。

Section 2 MVC模式

[TODO 考虑到MVC模式是必需过桥技能,所以建议还是先看一下相关文章,原文很简单,最后补上望海涵]

Section 3 Cake目录结构一览

当你解压缩Cake后,会发现有3个主目录

  • app
  • cake
  • vendors

cake目录下是核心lib,通常情况下你不要接触它们。

app目录下是你的程序文件所存放的位置。将app目录和cake目录分开,从而可以使多个应用共享一个cake类库。同样的也使得 CakePHP的升级变得很容易:你只需要下载最新的版本并且覆盖原来的类库就可以了。不用担心会覆盖掉你的应用程序文件。

你可以使用vendors目录来存放一些第三方类库。后面的章节将会讲到更多关于vendors的内容,一个最基本的概念就是你可以非常方便的 通过vendor()方法来调用vendor类库。

让我们来看一下完整的目录结构:

/app/config          - 配置文件目录,包括Database, ACL等/controllers     - Controllers文件 /components  - Components文件/index.php       - 允许你将app目录部署为DocumentRoot (译注:参见Apache相关配置)/models          - Model文件/plugins         - Plugins文件/tmp             - Cache和日志存放处 /vendors         - 你的应用中使用到的第三方类库/views          - 视图文件/elements    - 视图元素文件/errors      - 自定义错误页面/helpers     - Helpers文件/layouts     - 页面布局文件/pages       - 静态页面文件/webroot         - web根目录/css/files/img/js/cake                - 核心类库,请不要随意修改任何文件,除非你确信你有这个能力index.php           /vendors             - 服务器端的第三方类库

安装CakePHP

Section 1 简介

现在你已经了解了每一件事情,包括系统的结构和整个类库的目的,或者说你略过了上述章节,因为你对这些资料并不感兴趣只是希望快点开始工作。 Anyway 你已经摩拳擦掌准备完毕了。

这个章节来介绍了哪些是必须被安装到服务器上的,不同的配置方案,如何下载并安装CakePHP,访问默认页面,以及一些 troubleshooting以备一些意外情况的发生。

Section 2 安装必需

[TODO 一些译者认为比较基础的内容暂时优先级设为低 完美版释出时会补上]

Section 3 安装CakePHP

[TODO]

Section 4 设置CakePHP

第一种设置方案仅推荐使用在开发环境下,因为它不是最安全的方案。第二种方案考虑了更多的安全性问题因而可以放心的使用在生产环境下。

注意:/app/tmp 目录必须具有写权限

开发环境设置

对于开发环境来说,我们可以把整个Cake目录放置在DocumentRoot下:

/wwwroot/cake/app/cake/vendors.htaccessindex.php

这样的设置方案下,你的URL会如下这般(假设你使用了mod_rewrite):
www.example.com/cake/controllerName/actionName/param1/param2

生产环境设置

使用生产环境配置,你必须拥有修改Web Server DocumentRoot的权限。那样的话,整个域就如同一个CakePHP应用一般。

生产环境配置使用如下目录结构

../path_to_cake_install/app/config/controllers/models/plugins/tmp/vendors/views/webroot <-- 这将是你新的DocumentRoot.htaccessindex.php/cake/vendors.htaccessindex.php

建议修改Apache的配置文件如下:
DocumentRoot /path_to_cake/app/webroot

这样的配置下,你的URL将会如下这般:
http://www.example.com/controllerName/actionName/param1/param2

高级设置

在有些情况下,你希望能够将Cake应用的目录放在磁盘不同目录下。这可能是因为虚拟主机的限制,或者你希望多个app应用能够共享同一个 Cake Lib。

对于一个Cake应用,有3个主要组成部分:

1.CakePHP核心Lib - /cake目录下      2.      你的应用的代码(例如:controllers, models, layouts and views) - /app目录下      3.      你的应用web目录下的文件 (例如 图片 js脚本以及css样式文件等) - /app/webroot 目录下  

这3个目录都可以放置在磁盘的任意位置,但是webroot目录必须是web server可以访问的。你甚至可以把webroot目录移出app目录,只要你告诉Cake你把它们放到哪里去了。

你需要修改/app/webroot/index.php来完成配置(和Cake一起分发)。你需要修改3个常量:ROOT, APP_DIR, and CAKE_CORE_INCLUDE_PATH。

 1.ROOT 为包含app目录的根路径      2.APP_DIR app目录路径      3.CAKE_CORE_INCLUDE_PATH Cake核心Lib目录你的应用web目录下的文件 (例如 图片 js脚本以及css样式文件等) - /app/webroot 目录下   

这是范例:

/app/webroot/index.php (partial, comments removed)
if (!defined('ROOT'))
{define('ROOT', dirname(dirname(dirname(__FILE__))));
}if (!defined('APP_DIR'))
{define ('APP_DIR', basename(dirname(dirname(__FILE__))));
}if (!defined('CAKE_CORE_INCLUDE_PATH'))
{define('CAKE_CORE_INCLUDE_PATH', ROOT);
}       

下面通过一个具体的例子来解释我的配置

   1.我希望Cake Lib能够被共享,所以放在user/lib/cake下 (译注:作者都是linux配置,windows环境下随便放放吧)2.Cake webroot 目录为/var/www/mysite/。      3.程序文件目录为/home/me/mysite。

下面为具体的目录结构,不再赘述

/home/me/mysite                  <-- Used to be /cake_install/app/config/controllers/models/plugins/tmp/vendors/viewsindex.php
/var/www/mysite                  <-- Used to be /cake_install/app/webroot/css/files/img/js.htaccesscss.phpfavicon.icoindex.php
/usr/lib/cake                    <-- Used to be /cake_install/cake/cake/config/docs/libs/scriptsapp_controller.phpapp_model.phpbasics.phpbootstrap.phpdispatcher.php/vendors

我按照上面的目录结构修改/var/www/mysite/index.php如下:

我建议使用'DS'常量代替路径中的斜杠。这样会保证你不会写错导致找不到文件。(考虑跨平台)

  1. if  (!defined( 'ROOT' ))
  2. {
  3. define('ROOT' , DS. 'home' .DS. 'me' );
  4. }
  5. if  (!defined( 'APP_DIR' ))
  6. {
  7. define ('APP_DIR' ,  'mysite' );
  8. }
  9. if  (!defined( 'CAKE_CORE_INCLUDE_PATH' ))
  10. {
  11. define('CAKE_CORE_INCLUDE_PATH' , DS. 'usr' .DS. 'lib' .DS. 'cake' );
  12. }

if (!defined('ROOT')) { define('ROOT', DS.'home'.DS.'me'); } if (!defined('APP_DIR')) { define ('APP_DIR', 'mysite'); } if (!defined('CAKE_CORE_INCLUDE_PATH')) { define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib'.DS.'cake'); }

Section 5 配置Apache的mod_rewrite

CakePHP和mod_rewrite一同工作时会是最佳体验,我们发现有部分用户在他们的系统上不能让每件事情都很好的运作起来。所以我罗 列了一些可能会有帮助的信息:

1.首先确认.htaccess覆写是被允许的:在apache配置文件中检查<Directory>配置下的AllowOverride是不是设置为All。2.确认你修改的是server的配置文件而不是当前用户或者特定站点的配置文件。3.有的时候,可能你得到的CakePHP副本缺少了必须的.htaccess文件。因为有的操作系统会将以.开头的文件视作隐藏文件,因而不会拷贝它们。确定你的CakePHP副本是我们网站上下载或者是我们的SVN repository上checkout的。4.确认你是否成功加载了mod_rewrite!察看配置文件中是否有'LoadModule rewrite_module libexec/httpd/mod_rewrite.so' 和 'AddModule mod_rewrite.c'。5.如果你把Cake安装在一个用户目录下的话(http://example.com/~myusername/),你需要修改根目录中的.htaccess文件,加上一行"RewriteBase /~myusername/"。6.如果你发现URL后面加上了冗长乏味的sessionID的话(http://example.com/posts/?CAKEPHP=4kgj577sgabvnmhjgkdiuy1956if6ska)你需要加上一行"php_flag session.trans_id off"就ok了。

Section 6 确认Cake可以出炉了

好吧,让我们来看看这个baby吧。鉴于你选择的配置方式,你可以通过 http://www.example.com or http://www.example.com/ 来访问它。你会看到CakePHP的默认主页,和一个简短的通知消息,描述了你当前的数据库连接状态。

祝贺你!你已经完成了开始第一个CakeApp的准备工作。

CakePHP 中文手册相关推荐

  1. CakePHP中文手册【翻译】-Cake Blog创建指南

    Cake Blog创建指南 第1节 介绍 欢迎来到Cake.你可能正在使用本指南,因为你想学习更多关于Cake是如何工作的知识.其目的就是为了提高效率,并且让编写代码变得更加有趣.我们希望当你深入代码 ...

  2. cakephp $this-html-css,CakePHP - 中文手册

    Helper(帮助类) Section 1 Helpers Helper类就是为视图提供了常见且通用的方法,更好更快的格式化或者展现数据. HTML Helper 介绍 HTML Helper是Cak ...

  3. CakePHP中文手册【翻译】

    0.声明 1.前言 2.介绍CakePHP 3.基本概念 4.安装CakePHP 5.配置 6.Scaffolding 7.Model 8.Controller 9.View 10.Component ...

  4. CakePHP中文手册【翻译】-基本概念

    基本概念 第1节 介绍 本章是对MVC概念的一个短小而且随意的介绍,因为这些概念在Cake里得到实现.如果你是一个MVC模式的新人,很显然本章就是为你而写的.我们从MVC的一般概念的讨论开始,然后以我 ...

  5. CakePHP中文手册【翻译】-请求处理组件

    请求处理组件 第1节 介绍 在Cake里,使用请求处理组件来决定关于进来的HTTP请求信息.你可以使用它更好的通知你的controller关于AJAX请求,得到关于远程客户端IP地址,以及请求的内容类 ...

  6. CakePHP中文手册【翻译】-ACL

    访问控制列表(ACL) 第1节 理解ACL如何工作 最重要,也最强大的事情是需要一系列的访问控制.访问控制列表是一种细粒度,易维护以及易管理的方式来管理应用程序权限.访问控制列表或ACL[1]处理2件 ...

  7. Smarty中文手册,Smarty教程,Smarty模板的入门教材

    Smarty中文手册,Smarty教程,Smarty模板的入门教材 首先,这份Smarty中文手册的翻译工作是由喜悦国际村村民自发组织的,不代表任何人的意见和观点.对他们的无私奉献精神,我们表示感谢, ...

  8. man nfsd(rpc.nfsd中文手册)

    本人译作集合:http://www.cnblogs.com/f-ck-need-u/p/7048359.html rpc.nfsd(8) System Manager's Manual rpc.nfs ...

  9. CSS2.0中文手册(CHM版)

    Div+Css是现在网站架设的一个趋势,应用Css对于网站有诸多的好处.本教程是沈小雨2002年制作的 Css2.0中文手册,对学习CSS和查询CSS属性非常有帮助. Css2.0中文手册针对的是已有 ...

最新文章

  1. 7 Papers Radios | GCN大佬公开博士论文;谷歌提出扩展型BERT架构
  2. 安装中文版man手册,同时保留原英文版手册
  3. Navicat for MySQL 连接 Mysql 8.0.11 出现1251- Client does not support authentication protocol 错误
  4. qt中QMap与QMultimap用foreach遍历
  5. 武汉市房价数据挖掘与可视化分析(Python)
  6. 【vuejs】有关UI框架“ydui”中的倒计时组件的使用
  7. 免安装连接oracle,Oracle免安装PL/SQL连接
  8. 哈希值定义,哈希值是怎么生成的
  9. wps里ppt怎么换另一个的模板_你不知道的WPS|仅这2个制作PPT的动画技能,就足够让你的PPT逼格瞬间提升...
  10. .net性能最高的EF分页写法
  11. C#开发WinForm之DataGridView开发
  12. 计算机强制关机后无法正常启动,win10系统强制关机后无法正常启动了如何解决...
  13. Audacity分析清音浊音爆破音的时域及频域特性
  14. Excel根据名字批量插入图片
  15. 915M无线通讯模块 数传 SI4463 SX1278
  16. Hive的安装部署--三种模式
  17. L1-051 打折 (5 分)
  18. 汽车以太网技术及测试介绍
  19. 中国企业客户IT画像
  20. [备忘]Word实现公式居中/左对齐、编号右对齐

热门文章

  1. 信息学奥赛一本通C++语言——1054:三角形判断
  2. 5 SD配置-企业结构-定义-定义销售组
  3. 自从用了这几个网站后,linux下的开发(使用)更加简单化
  4. 剖析Caffe源码之Blob
  5. Opencv 图片 读取,显示,保存基本操作
  6. Linux 内核实验室 —— 基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境
  7. Lemmy仿Reddit社区 v0.8.10源码
  8. ios退款 怎么定位到是哪个用户_哪个浏览器兼容性最好用?看看用户都是怎么评价的吧...
  9. admin客户管理系统html5模板
  10. Yoast SEO wordpress插件 + 所有扩展