CodeIgniter 使用者指南 基礎教程 摘要

來源:互聯網
上載者:User

標籤:

CI應用程式流程程圖:

  1. index.php 作為前端控制器,初始化運行 CodeIgniter 所需要的基本資源。
  2. Router 檢查 HTTP 要求,以確定誰來處理請求。
  3. 如果緩衝(Cache)檔案存在,它將繞過通常的系統執行順序,被直接發送給瀏覽器。
  4. 安全(Security)。應用程式控制器(Application Controller)裝載之前,HTTP 要求和任何使用者提交的資料將被過濾。
  5. 控制器(Controller)裝載模型、核心庫、輔助函數,以及任何處理特定請求所需的其它資源。
  6. 最終視圖(View)渲染髮送到 網頁瀏覽器中的內容。如果開啟緩衝(Caching),視圖首先被緩衝,所以將可用於以後的請求。

模型-視圖-控制器:

  1. 模型 (Model) 代表你的資料結構。通常來說,你的模型類將包含取出、插入、更新你的資料庫資料這些功能。
  2. 視圖 (View) 是展示給使用者的資訊。一個視圖通常是一個網頁,但是在 CodeIgniter 中,一個視圖也可以是一個頁面片段,如頁頭、頁尾。它還可以是一個 RSS 頁面,或任何其它類型的“頁面”。
  3. 控制器 (Controller) 是模型、視圖以及其他任何處理 HTTP 要求所必須的資源之間的中介,並產生網頁。

CI對URL採用分段解析,對於這樣一個URL:http://example.com/news/latest/10,CI理解成這樣:http://example.com/[控制器類名]/[控制器方法名]/[所需參數]

首先,建立一個新的控制器pages.php,放在application/controllers/目錄下,這個類從CI_Controller類派生,定義了一個view方法,這個控制器將網站程式每次請求的中心,稱為超級對象

class Pages extends CI_Controller{        function __construct()    {        parent::__construct();    }    function view($page = ‘home‘)    {            }}

接下來,製作幾個基礎頁面模版,分別是頁頭和頁尾

header.php

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title><?php echo $title ?> - CodeIgniter 2 Tutorial</title></head><body>    <h1>CodeIgniter 2 Tutorial</h1>

footer.php

    <strong>&copy;2011</strong></body></html>

對應與pages控制器,在view/pages/目錄下新增兩個視圖檔案:home.php、about.php,內容可以簡單的輸出檔案名,下面就可以在控制器中載入視圖了

function view($page = ‘home‘){    // 檢查視圖檔案是否存在    if (!file_exists(APPPATH . "/views/pages/" . $page . ".php"))    {        show_404();    }    $data[‘title‘] = ucfirst($page);    $this->load->view(‘templates/header‘, $data);    $this->load->view(‘pages/‘ . $page, $data);    $this->load->view(‘templates/footer‘, $data);}

通過http://localhost:8080/studyci/1/index.php/pages/view/home就可以看到效果了,這個URL中index.php是入口檔案,pages是控制器檔案,view是方法名,home是參數值

資料庫的運算不是在控制類中進行的,而是在資料模型中,這樣就可以容易地被反覆使用,資料模型就是對資料庫或其他資料存放區方式進行取回、插入和更新的地方,在application/models/目錄下建立news_model.php,CI規定,模型的檔案名稱一定添加_model,類名與檔案名稱一致並且類名首字母必須大寫。

class News_model extends CI_Model{        function __construct()    {        $this->load->database();    }}

通過下面的指令碼建立本機資料庫

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));

在資料庫新增幾條測試資料

下面在模型檔案裡新增查詢代碼擷取合格news

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();}

新增視圖index.php,用於展示news列表

<?php foreach ($news as $item): ?>    <h2><?php echo $item[‘title‘]; ?></h2>    <div class="main">        <?php echo $item[‘text‘]; ?>    </div>    <p>        <a href="http://localhost:8080/studyci/1/index.php/news/view/<?php echo $item[‘slug‘]; ?>">            View article        </a>    </p><?php endforeach ?>

新增視圖view.php,用於展示新聞詳情

<?php    echo "<h2>{$news_item[‘title‘]}</h2>";    echo $news_item[‘text‘] . "<br />";?>

準備好模型和視圖後,新增news控制器,其中包含index和view兩個函數,分別跳轉到兩個視圖

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‘, $data);}function view($slug){    $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‘, $data);}

到此,實現了一個簡單的MVC模式

下面的代碼示範如何用表單插入一條記錄,首先建立錄入資料的表單/views/news/create.php

<h2>Create a news item</h2><?php echo validation_errors(); ?><?php echo form_open(‘news/create‘) ?>    <label for="title">Title</label>     <input type="input" name="title" /><br />    <label for="text">Text</label>    <textarea name="text"></textarea><br />    <input type="submit" name="submit" value="Create news item" /> </form>

其中validation_errors()提供表單驗錯,form_open()可以調用控制器的函數

再建立插入輸入成功時顯示的視圖/views/news/success.php

<?php    echo "Add news success<br />";?>

news控制器建立create函數

public function create(){    $this->load->helper(‘form‘);    $this->load->library(‘form_validation‘);    $data[‘title‘] = ‘Create a news item‘;    $this->form_validation->set_rules(‘title‘, ‘Title‘, ‘required‘);    $this->form_validation->set_rules(‘text‘, ‘text‘, ‘required‘);    if ($this->form_validation->run() === FALSE)    {        $this->load->view(‘templates/header‘, $data);          $this->load->view(‘news/create‘);         $this->load->view(‘templates/footer‘);    }    else    {        $this->news_model->set_news();        $this->load->view(‘templates/header‘, $data);         $this->load->view(‘news/success‘);        $this->load->view(‘templates/footer‘);    }}

插入記錄失敗時,重新顯示create視圖,插入成功顯示success視圖

最後新增模型中的set_news()方法

public function set_news(){    $this->load->helper(‘url‘);    $slug = url_title($this->input->post(‘title‘), ‘dash‘, TRUE);    $data = array(        ‘title‘ => $this->input->post(‘title‘),        ‘slug‘ => $slug,        ‘text‘ => $this->input->post(‘text‘)    );    return $this->db->insert(‘news‘, $data);}

插入功能就完成了,通過http://localhost:8080/studyci/1/index.php/news/create就可以訪問新增頁面了

CodeIgniter 使用者指南 基礎教程 摘要

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.