热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

CakePHP2.3.0-beta学习第一天

由于CakePHP现在没有很好的中文手册,所以在学习时做下笔记。刚开始不要全部理由,照着做一遍,大致能看到点效果,后面再逐步学习。我使用的环境是AppServ

由于CakePHP现在没有很好的中文手册,所以在学习时做下笔记。刚开始不要全部理由,照着做一遍,大致能看到点效果,后面再逐步学习。我使用的环境是AppServ,安装在C:/AppServ/,根目录为C:/AppServ/www/,cakephp放在

C:/AppServ/www/cakephp/

提前注意事项:

     加载rewrite模块

确保apache的模块加载:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

以及严格的目录允许被重写

 

    Options FollowSymLinks

    AllowOverride All

#    Order deny,allow

#    Deny from all

 

 

     php开启pdo_mysql模块   (在php配置文件中将相应模块前的;或#去掉即可)

 

1、下载CakePHP2.3.0-beta.zip     

网址:https://github.com/cakephp/cakephp/tags

 

2、解压后改名cakephp,放到网站的根目录

2.1 确保app/tmp目录及子目录有写权限,windows服务器可不用理会。

 

3、进行配置数据库连接信息和安全相关的两个配置值

 

     3.1、数据库配置:将     app/config/database.php.default复制一份命名为database.php,主要配置用户名密码和数据库以及表前缀

     public $default = array(

          'datasource' => 'Database/Mysql',

          'persistent' => false,

          'host' => 'localhost',     

          'login' => 'root',          //mysql用户名

          'password' => 'root',     //mysql密码

          'database' => 'test',     //数据库名

          'prefix' => '',               //表前缀

          //'encoding' => 'utf8',     //字符集编码默认utf8

     );

 

     3.2、配置安全参数:将 app/config/core.php    找到以下的选项,将值替换为随机字符串

     Configure::write('Security.salt', '替换后的随机字符串');

     Configure::write('Security.cipherSeed', '替换后的随机数字');

 

4、创建数据表,并插入测试数据

 

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());

 

5、创建模型,并添加自动验证规则

     在app/Model/下面创建Post.php  (注意命名规范,文件首字母大写),写上一个类,并加上自动验证规则

 

class Post extends AppModel {

    //验证规则,title和body字段不允许为空

    public $validate = array(

        'title' => array(

            'rule' => 'notEmpty'

        ),

        'body' => array(

            'rule' => 'notEmpty'

        )

    );

}

 

6、创建控制器,并写上方法

 

     在app/Controller/下创建PostsController.php (注意命名规范,这里的命名首字母大写,并且用表的复数形式:例如peopleController.php、BooksController.php)  现在如果要访问view方法可以用 http://localhost/cakephp/posts/view

 

 

class PostsController extends AppController {

 

    public $helpers = array('Html', 'Form');

 

    public function index() {           //查询Post表全部记录并将结果传送到视图层

        $this->set('posts', $this->Post->find('all'));     

    }

 

    public function view($id) {       //查询一条记录,根据id

        $this->Post->id = $id;

        $this->set('post', $this->Post->read());

    }

 

    public function add() {            //添加方法

        if ($this->request->is('post')) {

            $this->Post->create();

            if ($this->Post->save($this->request->data)) {

                $this->Session->setFlash('Your post has been saved.');

                $this->redirect(array('action' => 'index'));

            } else {

                $this->Session->setFlash('Unable to add your post.');

            }

        }

    }

 

    public function edit($id = null) {      //编辑方法

        $this->Post->id = $id;

        if ($this->request->is('get')) {

            $this->request->data = $this->Post->read();

        } else {

            if ($this->Post->save($this->request->data)) {

                $this->Session->setFlash('Your post has been updated.');

                $this->redirect(array('action' => 'index'));

            } else {

                $this->Session->setFlash('Unable to update your post.');

            }

        }

    }

 

    public function delete($id) {           //删除方法 

        if ($this->request->is('get')) {

            throw new MethodNotAllowedException();

        }

        if ($this->Post->delete($id)) {

            $this->Session->setFlash('The post with id: ' . $id . ' has been deleted.');

            $this->redirect(array('action' => 'index'));

        }

    }

 

}

 

 

7、建立视图层

 

在app/View/建立目录Posts/,然后在目录下面建立index.ctp (默认的模板后缀名是ctp。  修改模板后缀在app/AppController.php文件中的class AppController extends Controller {}  类中添加一个成员属性 public $ext = '.html';)  (需要修改其他的配置信息可参考核心文件:lib/Cake/Controller/Controller.php,里面有的属性都可以定制,可以在核心文件中修改,也可以在app/AppController.php中修改,建立在app中修改,因为方便框架升级)

 

Blog posts

Html->link('Add Post', array('action' => 'add')); ?>

   

       

       

       

       

   

 

   

   

       

       

       

       

   

   

 

Id Title Actions Created

            Html->link($post['Post']['title'], array('action' => 'view', $post['Post']['id'])); ?>

       

            Form->postLink(

                'Delete',

                array('action' => 'delete', $post['Post']['id']),

                array('confirm' => 'Are you sure?'));

            ?>

            Html->link('Edit', array('action' => 'edit', $post['Post']['id'])); ?>

       

           

       

 

继续创建浏览单条记录的view.ctp

 

 

 

Created:

 

 

继续创建编辑记录的模板edit.ctp

 

 

Edit Post

    echo $this->Form->create('Post', array('action' => 'edit'));

    echo $this->Form->input('title');

    echo $this->Form->input('body', array('rows' => '3'));

    echo $this->Form->input('id', array('type' => 'hidden'));

    echo $this->Form->end('Save Post');

 

最后添加增加记录的模板add.ctp

 

 

Add Post

echo $this->Form->create('Post');

echo $this->Form->input('title');

echo $this->Form->input('body', array('rows' => '3'));

echo $this->Form->end('Save Post');

?>

 

8、配置路由规则,让posts控制器的index方法做为根目录的访问地址

 

     在app/Config/routes.php中找到

 

Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

改为: Router::connect('/', array('controller' => 'posts', 'action' => 'index'));

 

9、现在打开地址: http://localhost/cakephp/ 进行访问首页,并且可以对post表进行增删改查


第一天就学到这里,学会了cakephp的增删改查,以及模板的后缀如何修改,大致的了解了cakephp是使用MVC的方式工作的。下面看下cakephp请求的图解。

Flow diagram showing a typical CakePHP request





推荐阅读
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • yikesnews第11期:微软Office两个0day和一个提权0day
    点击阅读原文可点击链接根据法国大选被黑客干扰,发送了带漏洞的文档Trumps_Attack_on_Syria_English.docx而此漏洞与ESET&FireEy ... [详细]
  • 优化Flask应用的并发处理:解决Mysql连接过多问题
    本文探讨了在Flask应用中通过优化后端架构来应对高并发请求,特别是针对Mysql 'too many connections' 错误的解决方案。我们将介绍如何利用Redis缓存、Gunicorn多进程和Celery异步任务队列来提升系统的性能和稳定性。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • Redux入门指南
    本文介绍Redux的基本概念和工作原理,帮助初学者理解如何使用Redux管理应用程序的状态。Redux是一个用于JavaScript应用的状态管理库,特别适用于React项目。 ... [详细]
  • 本文详细介绍了在 Windows 7 系统中配置 Nginx 1.10.3 和 PHP 7.1.1 NTS 的步骤,包括修改 PHP 配置文件、处理依赖项以及创建批处理脚本启动和停止服务。重点解释了如何解决常见的运行时错误。 ... [详细]
  • 在高并发需求的C++项目中,我们最初选择了JsonCpp进行JSON解析和序列化。然而,在处理大数据量时,JsonCpp频繁抛出异常,尤其是在多线程环境下问题更为突出。通过分析发现,旧版本的JsonCpp存在多线程安全性和性能瓶颈。经过评估,我们最终选择了RapidJSON作为替代方案,并实现了显著的性能提升。 ... [详细]
  • ThinkPHP 数据库配置详解
    本文详细介绍了如何在 ThinkPHP 框架中正确配置数据库连接参数,包括数据库类型、服务器地址、数据库名称等关键配置项。 ... [详细]
  • 版本控制工具——Git常用操作(下)
    本文由云+社区发表作者:工程师小熊摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复 ... [详细]
  • 本文探讨了如何在Classic ASP中实现与PHP的hash_hmac('SHA256', $message, pack('H*', $secret))函数等效的哈希生成方法。通过分析不同实现方式及其产生的差异,提供了一种使用Microsoft .NET Framework的解决方案。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
author-avatar
z1452
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有