[CodeIgniter]新聞模組(上)

這是跟著官方新聞模組教學練習的心得,程式碼在github
直接把整個檔案clone下來會比較好理解,以下就不貼上程式碼節省頁面空間

CodeIgniter分為MVC三個部分,我依照MVC的順序來理解

Model


models負責資料庫的處理方面,新建一個檔案叫News_model.php
__construct() 方法初始化物件並且繼承 CI_Model
在方法內載入database()物件
使得我們可以使用 $this->db 這個物件來存取資料庫類別

再新建一個function 做為取得資料庫檔案的方法,叫做 get_news
slug是用來分類新聞的資料庫欄位
取得資料是使用$query = $this->db->get('news')並且return $query->result_array()回傳資料
若有SQL條件可以使用內建的$query = $this->db->get_where('news', array('slug' => $slug))
設定查詢的where條件

還有 set_news() 方法,用來新增資料進資料庫
$this->load->helper('url')用來讓下面的url_title()可以被使用
$slug = url_title($this->input->post('title'), 'dash', TRUE);
會讀取傳入的字串,使用破折號 (-) 來替換掉空白,並將所有字串轉為小寫

$data = array()
處理要存入的資料,將其放進 $data 陣列中
陣列中的每個元素都對應到我們建立的資料庫中的欄位
post() 可以確保資料已經被消毒,避免各種SQL攻擊

return $this->db->insert('news', $data)
最後將 $data 存入資料庫當中。而這個程式庫預設就會被自動載入
以上就是Model的部分,這部分我也是沒有很熟悉,只是會使用而已
將來要繼續嘗試各種功能

View


Views負責使用者看到的畫面
新增一個資料夾templates,並建立footer.php和header.php
做為未來固定的頁首和頁尾

在templates資料夾同階層views下新建一個資料夾叫做news,並且新增以下檔案
create.php, index.php, success.php

create.php


用來新增新聞的頁面,主要是兩個輸入欄位和一個submit的input按鈕

success.php


新增成功的跳轉頁面,就這樣而已隨便做吧

index.php


主要的顯示畫面,就是用foreach把經由controller傳來,接收自model的資料陣列拆解
比較特別的是在CodeIgniter中,從model傳來的陣列資料可以直接呼叫索引值當作變數使用
例如傳來$data['title']在view中只要直接使用$title就行了
但在這邊傳來的原始資料因為是二維陣列,所以還是要進行分解
原始資料長得像這樣$data[$title = title,$news['title' ='' ','text' = '']]
分解後的資料一樣是使用以前用過的方式呼叫並顯示

以上就是View的部分

Controller


終於說到MVC的核心控制controller了,在controllers底下建立News.php
然後...剩下的下一篇再繼續,除了controller外還有資料庫的建立和路由的設定
打在同一篇實在太長了。

留言