热门标签 | 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





推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • Java验证码——kaptcha的使用配置及样式
    本文介绍了如何使用kaptcha库来实现Java验证码的配置和样式设置,包括pom.xml的依赖配置和web.xml中servlet的配置。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
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社区 版权所有