今天学了一下php,看到网上很多人推荐cakephp,就下载来试用了一下。以下是我记录的笔记,入门级的。如果我的理解和描述有不对的地方,请大家帮我指出来,谢谢!
1、下载并安装cakephp
- cakephp官网:http://cakephp.org/
- 或者http://www.microsoft.com/web/webmatrix/下载webmatrix,在这里安装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>