PHP框架CodeIgniter入门使用(2)

本文参考 链接介绍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’];;

五,配置数据库

在database.php里配置下数据库相关信息。

经过以上5步,一切ok。

浏览器输入:~yanzi/CodeIgniter/index.php/news

点击超链接后~yanzi/CodeIgniter/index.php/news/slug1111 转到以下:

版权声明:本文为博主原创文章,未经博主允许不得转载。

不敢面对自己的不完美,总是担心自己的失败,

PHP框架CodeIgniter入门使用(2)

相关文章:

你感兴趣的文章:

标签云: