基本概念

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

.htaccess

index.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

.htaccess

index.php

/cake

/vendors

.htaccess

index.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

/config

/controllers

/models

/plugins

/tmp

/vendors

/views

index.php

/var

/www

/mysite

/css

/files

/img

/js

.htaccess

css.php

favicon.ico

index.php

/usr

/lib

/cake

/cake

/config

/docs

/libs

/scripts

app_controller.php

app_model.php

basics.php

bootstrap.php

dispatcher.php

/vendors

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

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

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配置文件中检查配置下的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 index.php,CakePHP - 中文手册相关推荐

  1. cakephp index.php,CakePHP开发常用技巧详解

    问:开发中,程序一般设定debug为2,如何在某一个特定的action中关闭debug?答:Configure::write('debug', 0); 问:如何静态化某个action渲染的视图? 答: ...

  2. php+yii手册下载,yii中文手册-yii框架中文手册教程下载pdf格式免费版-东坡下载

    本节内容小编为大家精选带来的是pdf格式免费版yii框架中文手册教程下载文档,如果你需要一份yii框架中文手册或是一份yii框架教程,那么点击本文下方相应的下载地址下载这份"yii框架中文手 ...

  3. php3.2手册中文版,Uploadify v3.2中文手册分享

    最近想扩展一下图片批量上传这块的插件.找了很多最后决定用 Uploadify. 发现Uploadify v3.2中文手册,太强大了,我之前在官网看了好久,都是一头雾水,有中文的方便多了. 在部署一个U ...

  4. phpredis中文手册——《redis中文手册》 php版

    redis中文手册:http://readthedocs.org/docs/redis/en/latest/ 本文是参考<redis中文手册>,将示例代码用php来实现,注意php-red ...

  5. php redis中文手册——《redis中文手册》 php版

    redis中文手册:http://readthedocs.org/docs/redis/en/latest/ 本文是参考<redis中文手册>,将示例代码用php来实现,注意php-red ...

  6. phpredis中文手册(使用方法)——《redis中文手册》 php版

    redis中文手册:http://readthedocs.org/docs/redis/en/latest/ 本文是参考<redis中文手册>,将示例代码用php来实现,注意php-red ...

  7. phpredis中文手册《redis中文手册》php版

    本文是参考<redis中文手册>,将示例代码用php来实现,注意php-redis与redis_cli的区别(主要是返回值类型和参数用法). 目录(使用CTRL+F快速查找命令): php ...

  8. (转)Linux Kernel核心中文手册

    转自糖蒜的小屋http://blog.csdn.net/seastar_pickle/category/101975.aspx?PageNumber=2 Hardware Basic( 硬件基础知识  ...

  9. GNU Bison 中文手册

    GNU Bison 中文手册 2005年06月22日 22:31:00 阅读数:41743 20050620 GNU Bison 中文手册翻译完成 GNU Bison实际上是使用最广泛的Yacc-li ...

  10. 20050620 GNU Bison 中文手册翻译完成

    20050620 GNU Bison 中文手册翻译完成 GNU Bison实际上是使用最广泛的Yacc-like分析器生成器,使用它可以生成解释器,编译器,协议实现等多种程序. 它不但与Yacc兼容还 ...

最新文章

  1. javascript函数作用域与闭包
  2. linux怎么下载yum包,Linux下yum下载依赖包
  3. 浅谈各种数据库连接池
  4. React开发(274):ant design 时间显示秒
  5. python turtle 画数字8_turtle库的常用方法
  6. Python使用tkinter+moviepy+pyaudio开发视频播放器
  7. RColorBrewer | R语言中的配色方法汇总(Ⅰ)
  8. 数据结构和算法 D3
  9. SNMP(简单网络管理协议)详解
  10. DotNetBar SuperGridControl控件
  11. flink-sqlclient报错
  12. Something‘s wrong--perhaps a missing \item. \begin{thebibliography}{1}
  13. 面试时不能讲的跳槽理由有哪些
  14. 基于Java的实时通信软件的设计(类似微信)
  15. 【软件教程】如何将夸克网盘挂载为本地磁盘【Docker+AList+RaiDrive】
  16. javah命令详解与idea使用javah一键编译JNI的.头文件
  17. 苹果手机小圆圈怎么设置_敬业签苹果手机版软件小账本怎么设置密码?
  18. mysql中replace函数的用法
  19. PreCreateWindow作用
  20. Windows10 debug安装、下载

热门文章

  1. JAVA版村庄哨塔种子_我的世界:top16种子,出生5村庄、地狱堡垒、2哨塔和一堆遗迹...
  2. C语言程序设计(第三版)何钦铭著 习题2-6
  3. 计算机编程常见if语句,if编程搞笑语句
  4. 全套AI平面设计软件教程案例素材免费分享
  5. 优秀产品经理都是这样写周报的(顺便分享个周报模板)
  6. 完全卸载MySQL的方法
  7. pycharm2020版本以上中文版教程
  8. ubuntu下编译安装linux内核源码
  9. 提取win11最新等线字体1.18制作的magisk模块,有常规,加粗,和细体三个字重。
  10. 离散时间信号处理第三版英文版课后习题答案