cakephp简单示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cakephp简单示例相关的知识,希望对你有一定的参考价值。

今天学了一下php,看到网上很多人推荐cakephp,就下载来试用了一下。以下是我记录的笔记,入门级的。如果我的理解和描述有不对的地方,请大家帮我指出来,谢谢!

1、下载并安装cakephp

2、创建数据库phptest,数据表users

 

3、连接数据库,app/Config/database.php

public$default=array(‘datasource‘=>‘Database/mysql‘, //数据库类型

        ‘persistent‘=>false,‘host‘=>‘localhost‘, //主机名

        ‘login‘=>‘root‘, //用户名

        ‘password‘=>‘root‘, //密码

        ‘database‘=>‘phptest‘, //数据库名‘prefix‘=>‘‘//‘encoding‘ => ‘utf8‘,);

4、创建model,app/Model/User.php。注意php有严格的命名规范,数据表用复数形式如users,model用表名的单数形式如user,则cakephp会自动关联users数据表、User模型、UsersController控制器和Users/***.ctp的视图。

<?php

class User extends AppModel{

    var $name=‘User‘;//在 $name 中指定模型的名称是公认的最佳实践。

    var $useTable=‘users‘;//这句可不要,默认是连接users数据表

}

?>

5、创建控制器Controller,app/Controller/UsersController.php

<?php

class UsersController extends AppController{   

    var $name=‘Users‘;   

    function show(){

        $this->set(‘Users‘,$this->User->find(‘all‘));   //通过set函数把Users的值传给视图   

    }

}

?>

6、创建视图View,app/View/Users/show.ctp

<!DOCTYPE html>

<html lang="en">

    <head>

        <meta charset="utf-8" />

        <title></title>

    </head>

    <body>

        <table>

            <tr>

                <th>id</th><th>username</th><th>password</th>

            </tr>

            <?php foreach($Users as $User):?>

            <tr>

                <td><?php echo $User[‘User‘][‘id‘]; ?></td>

                <td><?php echo $this->Html->link($User[‘User‘][‘username‘],"/Users/view/".$User[‘User‘][‘id‘]); ?></td>

                <td><?php echo $User[‘User‘][‘password‘]; ?></td>

            </tr>

            <?php endforeach;?>

        </table>

    </body>

</html>

用table元素显示users列表,foreach($Users as $User)循环users对象,$User[‘模型名‘][‘属性‘]获取对象的属性。$this->Html->link(显示内容,url)链接,cake1.3版本前用的是$html->link,新版本使用$this->Html->link。

7、运行测试,浏览器url:http://localhost:16418/Users/show,访问Controller/UsersController的show方法,后跳转到View/show.ctp视图

 

8、完善功能,点击列表的username链接跳转到新视图显示user信息。根据id查询。

a、在UsersController.php添加view方法,方法名与link中的url一致。

function view($id=null){

        $this->User->id=$id;

        $this->set(‘User‘,$this->User->read());

    }

b、在View创建view.ctp

    <body>

        <?php echo "Id:".$User[‘User‘][‘id‘]."<br>"; ?>

        <?php echo "Username:".$User[‘User‘][‘username‘]."<br>"; ?>

        <?php echo "Password:".$User[‘User‘][‘password‘]."<br>"; ?>

    </body>

则点击链接后显示的结果为

 

9、新增

UsersController.php添加add方法

 function add(){

        if(!empty($this->data)){

            if($this->User->save($this->data)){

                $this->redirect(array(‘action‘=>‘show‘));

            }else{

                $this->redirect(array(‘action‘=>‘show‘));           

            }

        }

    }

新建视图add.ctp

<form action="/Users/add" method="post">

        <label>username:</label><input name="username" size="40"/>

        <label>password :</label><input type="password" name="password" size="40"/>

        <input type="submit" value="提交"/>

    </form>

模型User.php添加验证规则

//设置新增User的验证规则

    var $validate=array(

        "username"=>array("rule"=>"notEmpty"),

        "password"=>array("rule"=>"notEmpty")

    );

 

 

若表单内容不符合验证规则,则添加不成功

 

 

不符合"username"=>array("rule"=>"notEmpty")这条验证规则,所以failed。

10、删除

UsersController.php添加delete方法

function delete($id=null){

        $this->User->delete($id);

        $this->Session->setFlash("success");

        $this->redirect(array("action"=>"show"));

    }

修改视图show.ctp

<td><?php echo $this->Html->link("删除",array(‘action‘=>‘delete‘,$User[‘User‘][‘id‘]),null,‘你确定要删除吗?‘)?></td>

//link("删除",array(‘action‘:‘delete‘,参数),null,提示语句)

 

 

11、修改

UsersController.php修改方法view方法

function view($id=null){

        $this->User->id=$id;

        if(empty($this->data)){//若提交数据为空则显示

            $this->set(‘User‘,$this->User->read());

        }

        else{//若提交数据不为空则修改

            if($this->User->save($this->data)){

                $this->Session->setFlash("success");

                $this->redirect(array(‘action‘=>‘show‘));                

            }

        }

    }

修改视图view.ctp

<form action="/Users/view/<?php echo $User[‘User‘][‘id‘] ?>" method="post">

        <label>username:</label>

        <input name="username" size="40" value="<?php echo $User[‘User‘][‘username‘] ?>"/>

        <label>password :</label>

        <input type="password" name="password" size="40" value="<?php echo $User[‘User‘][‘password‘] ?>"/>

        <input type="submit" value="提交"/>

    </form>

 

以上是关于cakephp简单示例的主要内容,如果未能解决你的问题,请参考以下文章

php [cakephp:AuthComponent示例] AuthComponent的示例代码。 #cakephp

cakephp 3.x 和数据表示例

cakephp 查找所有有评论的帖子

在 CakePHP 中保留父 slug

在 CakePHP 3 中为文章添加评论

CakePHP 中的 Ajax 错误处理