先在php_myadmin中建一张table test_form,注意格式是 ”前缀_后缀“ 的形式
输入一些测试的数据,如下
id是主键;
在lib文件夹下的action中新建一个FormAction.class.php,内容如下:
class FormAction extends Action{
public function edit($id=0){
$Form = M('Form');
$this->vo = $Form->find($id);
$this->display();
}
public function update(){
$Form = D('Form');
if($Form->create()) {
$result = $Form->save();
if($result) {
$this->success('操作成功!');
}else{
$this->error('写入错误!');
}
}else{
$this->error($Form->getError());
}
}
}
find函数会通过传入的id找到你要更新的那行,所以id必须是主键,display函数将find找到的数据渲染在模板上;
在tpl文件夹下新建Form文件夹,新建edit.html,用来生成读取数据的模板,内容如下:
<center>
<form method="post" action="__URL__/update">标题:<input type="text" name="title" value="{$vo.title}"><br/>
姓名:<input type="text" name="name" value="{$vo.name}"><br/>
内容:<textarea name="content" rows="5" cols="45">{$vo.content}</textarea><br/>
<input type="hidden" name="id" value="{$vo.id}">
<input type="submit" value="提交">
</form>
</center>
"{$vo.title}" 中$vo是之前action中通过find函数找到的数据实例,title是表的属性
注意:input 的name属性必须为table的属性
在lib文件夹下的model中新建一个FormModel.class.php,内容如下:
class FormModel extends Model {
protected $_validate = array(
array('name','5,20','姓名长度必须在5到20','3','length'),
array('title','require','标题必须'),
);
protected $_auto = array(
array('create_time','time',1,'function'),
);
}
$_validate可以定义对table写入的一些限制,通过多维数组的形式传参;
$_auto可以完成一些自动填充项,如上述会自动添加table 的create_time
完成如上的操作后,在浏览器的地址栏输入 http://localhost/thinkphp_3.1.3/index.php/Form/edit/id/1
更改前:
更改后: