ci MVC完整案例
使用mvc来完成一个新闻的一组操作----增删改查。
1.准备工作
书写一个news控制器,
设计一张表
Ci操作数据库
1)数据库相关配置,在config/database.php
2)连接数据库
Ci提供了专门的数据库操作类,只需要加载该类即可。
有两种方式:
手动载入,在需要使用数据库操作类的地方,使用$this->load->database()即可,比如在模型中载入。
自动载入,在config/autoload.php配置文件中,autoload['libraries'] 加入database即可。
3)操作
定义news模型
Model_name 是模型类的名字。 类名的首字母必须大写,其他字母小写。
文件名应该是模型类名的小写版。
如何使用数据库操作类进行操作呢?
当我们连接了数据库之后,可以使用 $this->db 来操作数据,最常用的一个方法就是$this-db->query(sql语句)
如果直接使用query,是比较麻烦的。每次还得自己来拼凑sql语句,我们更希望有一个能够完成自动增删改查的这么一个功能,CI中也提供了这么一个类,这个类就是active recored类,也叫AR。最基础的一组操作,如下:
$this->db->get();
$this->db->insert();
$this->db->update();
$this->db->delete();
2.完成添加新闻
在news_model中定义add_news方法完成添加操作
在控制器中,接收表单提交的数据,然后调用模型来完成对数据库的操作。
先解决一个问题,就是在视图中,表单的action的值该如何来写?
这就涉及到CI的辅助函数 url 函数,
配置base_url,如下:
默认情况下,url辅助函数是没有加载的,要使用,则需要加载,可以在配置文件中,配置自动加载,也可以在需要使用的地方手动加载。
Url辅助函数中,提供了 base_url 和 site_url的方法,
其中,base_url 的值是 在config中配置的base_url的值,如http://localhost/citest/
而site_url的值则是 base_url + index_page,如http://localhost/citest/index.php
所以,在视图中要定义控制器的某个动作(url),使用site_url
在控制器中,定义insert 方法完成 插入操作
3.完成新闻的读取
在news_model模型中,定义一个方法,获取数据
然后在news控制器中,定义一个方法index,调用模型的中的方法,获取新闻,然后分配到视图
在视图文件 list.html中,展示新闻列表,使用的是php的原生模板语法
在浏览器中,输入http://localhost/citest/index.php/news/index
结果如下: