信息修改页面

创建控制器文件:controller/notes/edit.php 对应每条数据的修改页面。

edit.php代码如下:

<?php
$note = new Model('notes');
if(get()){
    //如果存在get提交的信息
    $note->find(get(1));
}
?>

创建视图文件:view/default/notes/edit.html 对应修改展示的视图。

edit.html 内容如下:

<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8"http-equiv="content-type">
<title>CRUD测试</title>
<style type="text/css">
</style>
</head>
<body>
<form action="creat.html"method="post">
{$note->lable('title')}:{$note->text('title')}<br/>
{$note->lable('author')}:{$note->text('author')}
{$note->lable('theme')}:{$note->select('theme')}<br/>
{$note->lable('postdate')}:{$note->date('postdate')}
{$note->lable('bepublished')}:{$note->checkbox('bepublished')}<br/>
{$note->lable('content')}:<br/>
{$note->texteditor('content')}<br/>
<button type="submit">提交</button>
{$note->hidden('id')}<br/>
</form>
</body>
</html>

浏览器输入:http://www.yyuc.net/notes/edit-1.html , 进行相应的数据修改,点击"提交”,此条信息就会被更新。

你会发现edit.html和creat.html基本一致,有以下两处不同:

1、creat.html的 form的action为空这样默认是当前页面,也就是creat.html。而同样的edit.html的form的action也为creat.html。也就是说两个页面提交的信息都是通过creat.php处理的。$note->save();既可以新增,也可以更新,框架是通过判断模型中是否定义了主键ID来区分的。

2、edit.html比creat.html多了一行代码{$note->hidden('id')}这是隐藏的数据的主键id的提交信息。其实在creat.html中也是可以加上{$note->hidden('id')}这句的,因为进入视图creat.html之前$note的id并未被赋值,自然提交请求之后,控制器还是会新增一条数据的。 这样两个视图就变的一模一样。

索性,我们删掉creat.html。然后将creat.php的代码改为:

<?php
$note = new Model('notes');
if(Request::post()){
    //如果有post信息 则为新增后的Form提交
    $note->load_from_post();
    $note->save();
    Redirect::to('index');
}
Page::view('edit');
?>

Page::view('edit')的意思是说,这个控制器的视图改为同级目录下的edit.html。

不过,实际的开发中,两个视图总会有些差别的,所以为了减少代码量和通用性就需要将通用的部分抽离出来作为单独的模板供其他视图引用。