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>

时间: 2024-11-05 07:02:53

cakephp简单示例的相关文章

AMQP消息队列之RabbitMQ简单示例

前面一篇文章讲了如何快速搭建一个ActiveMQ的示例程序,ActiveMQ是JMS的实现,那这篇文章就再看下另外一种消息队列AMQP的代表实现RabbitMQ的简单示例吧.在具体讲解之前,先通过一个图来概览下: 1.添加Maven依赖 <!-- rabbitmq begin --> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit

HMM的维特比算法简单示例

今天读了一位大牛的关于HMM的技术博客,读完之后,写了一个关于维特比算法的简单示例,用scala和java语言混合编写的.现在上传之. package com.txq.hmm import java.utilimport scala.collection._ /** * HMM维特比算法,根据显示状态链条估计隐式链条 * @param states 隐式states * @param observations 显式states * @param start_probability 初始概率向量

spring-servlet.xml简单示例

spring-servlet.xml简单示例 某个项目中的spring-servlet.xml 记下来以后研究用 1 <!-- springMVC简单配置 --> 2 <?xml version="1.0" encoding="UTF-8"?> 3 <beans xmlns="http://www.springframework.org/schema/beans" 4 xmlns:xsi="http://w

关于Ajax实现的简单示例

一.代码示例 关于Ajax的基本概念(包括XMLHttpRequest对象及其相关方法属性)移步这里(w3school中文版)学习了解. <!doctype html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>使用Ajax异步加载数据</title> <script type = "text/javasc

【转】bind简单示例

bind简单示例代码 namespace { class placeholder_ {}; placeholder_ __1; } template <typename R, typename T, typename Arg> class simple_bind_t { private: typedef R (T::*F)(Arg); F f_; T* t_; Arg& a_; public: simple_bind_t(F f, T* t, Arg &a) : f_(f),

SQL左连接、右连接和内连接的简单示例

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录: right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录: inner join(等值连接) 只返回两个表中联结字段相等的行:举例如下: -------------------------------------------- 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录

Backbone简单示例

要的资源: <script type="text/javascript" src="../dep/underscore-1.6.0.min.js"></script> <script type="text/javascript" src="../dep/jquery-1.11.1.min.js"></script> <script type="text/javas

动态网站开发技术学习2:VS 2010制作作第一个简单示例网站

制作一个简单示例网站的步骤: 一,启动VS 2010开发环境,选择菜单中的"文件",选择其中的"新建",再选择"网站",会弹出"新建网站"对话框. 二,在"新建网站"的对话框,在"已安装模板"中选择Visual C#,右侧的选择"ASP.NET网站"选项,单击"新建网 站"中的"文件系统",下拉菜单中有"文件系统&qu

简单示例

下面是一个简单示例,当阀切换至自动模式时,会自动向储罐中补水,到达设定值后自动关闭.当储罐中水位到达设定值后水泵自动开启,水位低时联锁关闭. 上图分别显示了阀门和水泵操作面板 上图显示了水泵的联锁信息 上图是参数设置 上图显示了水位曲线