浏览器输入:http://www.yyuc.net/notes/,一个信息列表页面就展现在你面前了。
此时,我们再修改下新增页面,使新增完成后自动跳转到列表页 creat.php 内容改为:
???
???$note =new Model('notes'); ???if(Request::post()){
???//如果有post信息 则认为是新增后的Form提交
???//单纯的post信息判断是不安全的 因为没有具体的字段要求和判断所以可以这样写
???$note->load_from_post(); ???$note->save();
???Redirect::to('index'); ???} ????>
通过调用框架的Redirect::to方法而不是直接的视图引用,可以有效的屏蔽了F5刷新引起的重复提交问题。
信息详细页面
创建控制器文件:controller/notes/show.php 对应详细信息展示的控制器。 show.php内容如下:
???
???$note = new Model('notes'); ???$note->find(get(1)); ????>
创建视图文件:view/default/notes/show.html 对应详细信息展示的视图。 show.html 内容如下:
??? ??? ???
??????
??? ??? ???
浏览器输入:http://www.yyuc.net/notes/show-1.html
信息删除
修改列表展示页面,让每条信息点击后进入相应的详细页面,并添加删除按钮和编辑按钮。
index.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的代码改为: ???
???$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。
不过,实际的开发中,两个视图总会有些差别的,所以为了减少代码量和通用性就需要将通用的部分抽离出来作为单独的模板供其他视图引用。
视图模板的引用
读到这里你会发现所有页面并没有导航条,这样只能靠直接输入地址栏或者回退按钮来做页面跳转,让我来做一个通用的导航条模板让所有视图都引用他,这样各页面的跳转就容易多了。 创建视图文件:view/default/notes/navigation.html 对应导航条视图。 navigation.html内容如下:
???
???| ???|
??? ??? ???