•既然要看文档为什么不看英文文档呢?所以自己翻译了CakePHP手册里的这篇文章,翻得很烂,权当自己学习的记录。
原文地址:/view/219/Blog
1准备
欢迎来到CakePHP的世界!你也许正在看这篇指导文章,因为你想更多地了解CakePHP是如何工作的。我们的目标就是增加程序的生产效率并且让代码更有趣:我们希望当你编写代码的时候会明白这一点。
这篇文章将带你创建一个简单的博客程序。我们将先获得并安装CakePHP,然后配置一个数据库,接着创建一个能够展示、添加、编辑并且删除文章的程序。
下面这些是你所需要的:
1.一个正在运行的WEB服务器。尽管下面的介绍对于其他服务器软件
来说都是相似的,但再这里我们假定你正在使用Apache。我们可
能会对服务器做一些配置,但是对于大多数人完全可以运行
CakePHP而不用做任何配置。
2.一个数据库程序。在这篇文章里,我们将使用mySQL。你需要有足
够的SQL知识来创建一个数据库:CakePHP将操作它。
3.基本的PHP知识。特别是对于OOP的了解越多越好:但是也别担心,
如果你是一个程序爱好者的话。
柳岩乳4.最后,你需要一些MVC方面的基本知识。你也可以快速的看一下这
篇文章:《理解Model-View-Controller》。
下面就让我们开始吧。
1.1获得CakePHP
首先,让我们获得一个新的CakePHP拷贝。
访问在Cakeforge上的CakePHP项目:
/projects/cakephp/下载稳定版本。在这里你需要
倪妮 倪萍你也可以查看/导出一个新的拷贝在我们的trun上:
/repo/trunk/cake//
不管你是怎么下载它的,把它放到你自己的文档目录里。这些完成后你的目录看起来应该是下面这个样子的:
/path_to_document_root优美的语句
/app
/cake
/docs
/vendors
.htaccess
天猫双十一成交额2021
index.php
现在正是可以学习下CakePHP的目录结构是如何工作的:查看《CakePHP 文件结构》。
1.2创建一个数据库
接下来,为我们的博客建立一个数据库。现在我们只需要创建一个表来储存我们的文章。作为检测我还将添加一些文章进去。在你的数据库里执行下面的SQL语句:
/*首先,创建我们的posts表:*/
CREATE TABLE posts(
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50),
body TEXT,
created DATETIME DEFAULT NULL,
modified DATETIME DEFAULT NULL
);
/*然后添加一些文章作为测试:*/
INSERT INTO posts(title,body,created)
VALUES('The title','This is the post body.',NOW()); INSERT INTO posts(title,body,created)
VALUES('A title once again','And the post body follows.', NOW());
INSERT INTO posts(title,body,created)
VALUES('Title strikes back','This is really exciting!Not.', NOW());
表和字段的名字都不是随意取的。如果你遵守CakePHP的数据库和类命名规则(《CakePHP规则》),你将能使用很多函数功能并且不需要配置。CakePHP能足够灵活的兼容那些糟糕的数据库设计,但是依靠一些约定能节省你的时间。
查看《CakePHP规则》获得更多信息。将我们的表命名为'posts'是符合规则的,它会自动跟我们的Post模型挂钩,而'modified'和'created'字段也会自动被CakePHP处理。
1.3数据库的配置
继续:让我们告诉CakePHP我们数据库在哪里并且如何链接它。大多数情况下这是你第一次也是最后一次配置这一切。
CakePHP的数据库配置文件在/app/config/database.php.default。在同一目录下复制这个文件并且命名为database.php。
配置文件非常简单明了:只需要把$default数组里的值替换成你自己的设置。一个已完成的配置应该看起来是下面这个样子:
var$default=array(
'driver'=>'mysql',
'persistent'=>'false',
'host'=>'localhost',
'port'=>'',
'login'=>'cakeBlog',
'password'=>'c4k3-rUl3Z',
'database'=>'cake_blog_tutorial',
'schema'=>'',
'prefix'=>'',
'encoding'=>''
);
现在,保存database.php文件。你可以打开你的浏览器,并且看到CakePHP 的欢迎页面。它会告诉你的数据库配置文件被发现并且CakePHP成功连接了数据库。
• 1.4可选配置
另外还有两个项目可以设置。大多数开发者不需要本文就能搞定。一是定义用于安全散列的字符串(或者叫做“salt”),二是设置CakePHP能对它的tmp文件夹执行写操作。
更改/app/config/core.php153行的值。不管新的值是什么,越长就越不容易被猜到。
<?php
/**
*A random string used in security hashing methods.
*/
Configure::write('Security.salt',
'pl345e-P45s_7h3*S@l7!');
?>
最后的问题是把app/tmp目录设置成能被网页写入。最好的方法是通过运行“<?php echo'whoami';?>”来到网页服务的所有者,然后把
app/tmp目录的所有权设置成该目录。在*nix下的命令可能看起来是这个样子的(我是直接把tmp的权限设为777的,原文这么写我就照翻了)。
$chown-R www-data app/tmp
如果因为某些原因CakePHP不能写这个目录,你将被在程序运行的时候得到一个警告。
1.5关于mod_rewrite
有时候新用户会遇上mod_rewrite的问题,所以在这里我促略的提一下。如果CakePHP的欢迎页面看起来有点怪怪的(没图片或者没有CSS样式),这可能就意味着mod_rewrite并没有在你的系统上起作用。下面一些将帮助你运行它:
1.确定再你的f里.htaccess是被允许的,你应该在服务器上有一段东西来定义你每一个目录。确定AllowOverride是被设置成All 的。为了安全性和性能考虑,不要在<Directory/>里设置把AllowOverride设置成All,而应该是在指出你真实web目录<Directory>区域。
2.确定你编辑了正确的f(原文后面是rather than a user-or f,我不能理解。==!)。
3.另外一些原因是:你获得的CakePHP拷贝可能没有.htaccess文件。这是因为有些操作系统会把文件名'.'开始的文件设置为隐藏而没有复制他们。确定你的CakePHP拷贝来自网站的下载区或者SVN仓库。
4.确定Apache正确加载了mod_rewrite模块。你应该能看到像“LoadModule rewrite_module libexec/httpd/mod_rewrite.so or (Apache1.3)AddModule mod_rewrite.c”的字样在你的f里。
如果你不想使用或不能使用mod_rewirte(或者其他一些兼容的模块)在你的服务器上,你需要使用CakePHP构建干净的URL。在
/app/config/core.php里,取消下面这行的注释:
Configure::write('App.baseUrl',env('SCRIPT_NAME'));
并且删除.htaccess文件:
/.htaccess
/app/.htaccess
/app/webroot/.htaccess
这将你的URL看起来像
王艳的个人资料“ample/index.php/controllername/actionname/param”而不是“ample/controll
ername/actionname/param”。
1.6创建一个Post模型
模型好比是CakePHP程序的血肉。通过创建CakePHP模型来于数据库互通,这样我们就有了在适当的位置查看、添加、编辑以及删除的基础。CakePHP的模型文件被放置在/app/models,我们创建的文件将被保存在/app/models/post.php。完整的文件应该看起来是这个样子的: <?php
class Post extends AppModel{
var$name='Post';
}
?>
在CakePHP里命名规则是很重要的。通过我们的Post模型,CakePHP能自动判断出这个模型将被用在PostsController,并且关联到叫做posts 数据库表。
最好加上$name变量,以用来区别PHP4一些奇怪的类名。
金在中个人资料更多关于模型的内容,例如表前缀、回调以及检验,请查看手册里的模型章节。
1.7创建一个Posts控制器
下面我将为为什么的文章创建一个控制器。当交互发生时控制器将处理所有的post逻辑。我们将在/app/controllers目录下的
posts_controller.php文件里新建一个控制器。一个基本的控制器看起
发布评论