PHP框架CodeIgniter入门使用(2)
来源:互联网 发布:ubuntu搭建openstack 编辑:程序博客网 时间:2024/06/13 17:27
本文参考 链接 介绍CodeIgniter如何将Controller连接Model层(操作数据库),实现读取新闻条目功能。通过本文串通Controller和Model以及View之间如何协同,控制。
一,创建Model
有一点需要明确,关于数据库的操作在model层,而非Controller层,Controller只负责业务控制逻辑,从model里取数据然后送给view。phpmyadmin里:
CREATE TABLE news ( id int(11) NOT NULL AUTO_INCREMENT, title varchar(128) NOT NULL, slug varchar(128) NOT NULL, text text NOT NULL, PRIMARY KEY (id), KEY slug (slug));
新建个表。注意text类型的选utf8编码,然后随便插入两条数据。在models文件夹下新建News_model:
<?php/** * Created by PhpStorm. * User: yanzi * Date: 15/10/22 * Time: 下午6:38 */class News_model extends CI_Model{ public function __construct(){ $this->load->database(); } public function get_news($slug = FALSE){ if($slug == false){ $query = $this->db->get('news'); return $query->result_array(); } $query = $this->db->get_where('news', array('slug' => slug)); return $query->row_array(); }}
注意上面result_array()是返回查询到所有的结果,row_array()是返回查询的当前那条结果。关于数据库的部分可以参考 链接二新建Controller
News.php
<?php/** * Created by PhpStorm. * User: yanzi * Date: 15/10/23 * Time: 上午11:38 */class News extends CI_Controller { /** * News constructor. */ public function __construct() { parent::__construct(); $this->load->model("news_model"); $this->load->helper('url_helper'); } /** * 显示所有新闻 */ public function index(){ $data['news'] = $this->news_model->get_news(); $data['title'] = 'News archive'; $this->load->view('templates/header', $data); $this->load->view('news/index', $data); $this->load->view('templates/footer'); } /** * 显示某一个slug的新闻 * @param null $slug */ public function view($slug = NULL) { $data['news_item'] = $this->news_model->get_news($slug); if (empty($data['news_item'])) { show_404(); } $data['title'] = $data['news_item']['title']; $this->load->view('templates/header', $data); $this->load->view('news/view', $data); $this->load->view('templates/footer'); }}
注意:1,Controller如何加载Model?
在News的构造函数里通过load->model(''")里将model目录下对应名字的model加载进来,然后再使用时通过$this->news_model进行调用。
2,Model的名字是不区分大小写的,即真正的model可以大写,在load的时候可以写成小写。
3,Controller如何跟view层发生关系?
通过$this->load->view('')加载view文件夹下的文件,传递一个array。在Controller里的array的key,在view下就是对应的变量名字。关于传递数据这块可以参考 CI的模版解析类部分。
4,通过代码可以看到,News这个控制器加载了view/news文件夹下的index.php 和view.php
三,新建index.php
<h2><?php echo $title; ?></h2><?php foreach ($news as $news_item): ?> <h3><?php echo $news_item['title']; ?></h3> <div class="main"> <?php echo $news_item['text']; ?> </div> <p><a href="<?php echo site_url('news/'.$news_item['slug']); ?>">View article</a></p><?php endforeach; ?>
注意:此处用了site_url设置超链接,用意是地址栏里输入news/slug能直接跳转到news/view/slug,因此要设置路由。view.php
<?phpecho '<h2>'.$news_item['title'].'</h2>';echo $news_item['text'];
四,修改routes.php
在原来基础上,增加以下两句:
$route['news'] = 'news';$route['news/(:any)'] = 'news/view/$1';
五,配置数据库
在database.php里配置下数据库相关信息。
经过以上5步,一切ok。
浏览器输入:http://localhost/~yanzi/CodeIgniter/index.php/news
点击超链接后http://localhost/~yanzi/CodeIgniter/index.php/news/slug1111 转到以下:
- PHP框架CodeIgniter入门使用(2)
- php框架CodeIgniter的使用
- [PHP]使用CodeIgniter快速搭建博客框架
- [PHP]使用CodeIgniter快速搭建博客框架
- PHP开发框架--CodeIgniter(CI)使用总结
- PHP开发框架--CodeIgniter(CI)使用总结
- CodeIgniter php开发框架
- PHP框架之Codeigniter
- php框架CodeIgniter介绍
- PHP框架 CodeIgniter学习
- php框架--CodeIgniter
- CodeIgniter框架 CI PHP
- PHP codeigniter框架
- php-CodeIgniter框架 修改
- php-CodeIgniter框架 删除
- php框架codeigniter中如何使用框架的session
- php框架codeigniter中如何使用框架的session
- [PHP]框架教程:CodeIgniter框架的简易使用
- 解决“无法删除表,被外键约束引用”
- spring框架学习(二)
- protocol isis issues
- IOS 使用NJKWebViewProgress做webview加载进度条
- Linux命令
- PHP框架CodeIgniter入门使用(2)
- JDBC-连接mysql查询数据时中文为空解决办法
- eclipse 中导入RecyclerView
- Xcode7 The resource could not be loaded because the App Transport Security
- C++ 与js 2
- Core Animation 的隐式动画
- TreeSet --实现学生按年龄大小和姓名排序
- JVM自带的监控工具
- 远程设置Mac 黑名单和踢下线实现