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:

 

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

 

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

 


>View article

註意:此處用瞭site_url設置超鏈接,用意是地址欄裡輸入news/slug能直接跳轉到news/view/slug,因此要設置路由。

 

 

view.php

 

<!--?php
echo ''.$news_item['title'].'';
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 轉到以下:

/

 

 

 

發佈留言