`
dcj3sjt126com
  • 浏览: 1871160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

CakePHP2.3.0-beta学习第一天

    博客分类:
  • PHP
阅读更多

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

C:/AppServ/www/cakephp/

提前注意事项:

     加载rewrite模块

确保apache的模块加载:

LoadModule rewrite_module libexec/apache2/mod_rewrite.so

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

 

<Directory "C:/AppServ/www/cakephp/">

    Options FollowSymLinks

    AllowOverride All

#    Order deny,allow

#    Deny from all

</Directory>

 

 

     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  (注意命名规范,文件首字母大写),写上一个类,并加上自动验证规则

 

<?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

 

<?php

 

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中修改,因为方便框架升级)

 

<!-- File: /app/View/Posts/index.ctp -->

<h1>Blog posts</h1>

<p><?php echo $this->Html->link('Add Post', array('action' => 'add')); ?></p>

<table>

    <tr>

        <th>Id</th>

        <th>Title</th>

        <th>Actions</th>

        <th>Created</th>

    </tr>

 

    <?php foreach ($posts as $post): ?>

    <tr>

        <td><?php echo $post['Post']['id']; ?></td>

        <td>

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

        </td>

        <td>

            <?php echo $this->Form->postLink(

                'Delete',

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

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

            ?>

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

        </td>

        <td>

            <?php echo $post['Post']['created']; ?>

        </td>

    </tr>

    <?php endforeach; ?>

 

</table>

 

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

 

<!-- File: /app/View/Posts/view.ctp -->

 

<h1><?php echo h($post['Post']['title']); ?></h1>

 

<p><small>Created: <?php echo $post['Post']['created']; ?></small></p>

 

<p><?php echo h($post['Post']['body']); ?></p>

 

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

 

<!-- File: /app/View/Posts/edit.ctp -->

 

<h1>Edit Post</h1>

<?php

    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

 

<!-- File: /app/View/Posts/add.ctp -->

 

<h1>Add Post</h1>

<?php

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
 
 
 
 
0
1
分享到:
评论

相关推荐

    cakephp-cakephp-2.0.0-beta-0-g402934f.zip

    标题中的"cakephp-cakephp-2.0.0-beta-0-g402934f.zip"表明这是一个针对CakePHP 2.0.0 beta版本的压缩包,其中可能包含了框架的核心组件、示例代码以及相关的文档资料。 在描述中提到,CakePHP是“借鉴Raid on ...

    cakephp-2.3.0.rar_ruby rails php

    蛋糕PHP(CakePHP)是一个基于Model-View-Controller(MVC)架构模式的PHP框架,它为开发者提供了...在使用过程中,对压缩包中的cakephp-2.3.0文件夹进行解压并按照官方文档进行配置,即可开始您的CakePHP开发之旅。

    cakephp-cakephp-1.3.8-0-g33afe21

    标题 "cakephp-cakephp-1.3.8-0-g33afe21" 提供的信息表明,这是一个关于 CakePHP 框架的特定版本,版本号为 1.3.8,Git 修订版号是 0-g33afe21。这通常意味着这是一个开源项目,可能是一个源代码库的归档,或者是...

    cakephp-cakephp-2.0.0-dev-0-gbe96338

    "cakephp-cakephp-2.0.0-dev-0-gbe96338" 是CakePHP框架的一个特定版本,它代表了该框架在2.0大版本中的一个开发分支。此版本在官方网站上可获取,确保了其官方支持和更新,为开发者提供了稳定且安全的开发环境。 ...

    CakePHP3-Proffer, CakePHP 3的上传插件.zip

    CakePHP3-Proffer, CakePHP 3的上传插件 CakePHP3-ProfferCakePHP 3的上传插件。 是什么?,needed upload upload upload upload upload upload upload plugin plugin plugin

    CakePHP v2.3.0.zip

    cakephp-2.3.0**:这是实际的源代码包,包含所有必要的文件和目录,如Lib、Vendor、app等,它们构成了CakePHP的运行环境。 总的来说,CakePHP v2.3.0是一个强大的PHP开发框架,提供了丰富的功能和优秀的开发体验。...

    cakephp php-framework

    There are two main ways to get a fresh copy of CakePHP. You can either download an archive copy (zip/tar.gz/tar.bz2) from the main website, or check out the code from the git repository. To download ...

    cakephp-cakephp-1.3.12-32-gb4e3c8a.zip_cakephp 1.3_cakephp1.3_ca

    通过对CakePHP 1.3版本的学习和实践,开发者不仅可以掌握MVC模式的精髓,还能熟练运用各种框架特性,提高开发效率。同时,对于想要升级到更高版本如2.0的开发者,理解1.3的基础将为过渡提供坚实的基础。 总结起来,...

    cakephp-2.2.4-0

    cakephp-2.2.4-0 稳定版框架

    cakephp--使用_CakePHP_的_Session_和_Request_Handler_组件

    ### 使用CakePHP的Session和Request Handler组件 #### Session组件概览 在CakePHP框架中,Session组件被设计用于管理用户的会话数据,确保网站能够识别并处理特定用户的状态。这在用户登录、购物车功能、个性化...

    CakePHP插件-将Ajax聊天添加到您的应用程序_PHP_下载.zip

    这个名为"CakePHP插件-将Ajax聊天添加到您的应用程序"的资源是为开发者提供了一种集成实时聊天功能的方式,使他们能够在自己的CakePHP应用中轻松实现用户间的交互。 Ajax(Asynchronous JavaScript and XML)是一种...

    cakephp-3-0-1

    CakePHP 3.0.1 发布,此版本是个 bug 修复版本 CakePHP 3.0.0 稳定版是向后不兼容版本,现在 CakePHP 最低要求: PHP 5.4.16 及其以上 mbstring 扩展 intl 扩展

    cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件.zip

    cakephp-jwt-auth, 使用JSON网络令牌进行身份验证的CakePHP插件 CakePHP认证插件 包含AuthComponent类认证的插件,用于使用 JSON网络令牌进行身份验证。 你可以在这里详细阅读关于JSON网络令牌规范的详细说明。要求...

    cakephp3-bootstrap-helpers:Bootstrap 3和4的CakePHP 3.x帮助器

    CakePHP 3.x Bootstrap的帮助器 CakePHP 3.x Helpers以@Twitter Boostrap样式生成HTML:可用的Breadcrumbs , Flash , Form , Html , Modal , Navbar , Panel和Paginator帮助器! 如何... ? 安装 如果您想要...

    cakephp-jwt-auth:一个CakePHP插件,用于使用JSON Web令牌进行身份验证

    composer require admad/cakephp-jwt-auth 用法 使用Cake的控制台加载插件: ./bin/cake plugin load ADmad/JwtAuth 配置: 设置AuthComponent : // In your controller, for e.g. src/Api/AppController.php ...

    CakePHP-Audit-Log-Plugin, 记录在CRUD操作期间对对象所做的更改.zip

    CakePHP-Audit-Log-Plugin, 记录在CRUD操作期间对对象所做的更改 审计日志插件针对的日志插件 2 1. x. 为每个连接的模型创建一个审计历史。行为跟踪两个级别上的更改。 它获取完全水合对象的快照,在更改之后,更改...

    codetron-cakephp2-api:api插件的codetron配方

    `codetron-cakephp2-api` 是一个针对 CakePHP 2.x 框架的 API 开发插件,旨在帮助开发者更高效地构建和管理 RESTful API 服务。这个插件是 Codetron 配方的一部分,Codetron 是一套用于提升开发效率和代码质量的工具...

    CakePHP-1.2-Cheatsheet

    - **first**: 返回第一条匹配记录。 - **count**: 返回匹配记录的数量。 - **list**: 将结果转换为数组形式返回。 - **threaded**: 以树形结构返回数据。 - **neighbors**: 返回相邻的记录。 这些查询类型可以根据...

    cakephp3-soft-delete

    当软删除一个实体时,实际上并没有从数据库中删除它。 而是在记录上设置了deleted时间戳。 要求 该插件是为cakephp 3.x开发的。 安装 您可以使用将此插件安装到CakePHP应用程序中。 更新您的作曲家文件以包括此...

    cakephp-1.2 manual

    《CakePHP 1.2 手册》是针对该版本框架的重要参考资料,旨在帮助开发者深入理解和有效使用 CakePHP 进行Web开发。 CakePHP 是一个基于Model-View-Controller(MVC)架构模式的开源PHP框架,它简化了Web应用程序的...

Global site tag (gtag.js) - Google Analytics