CI框架 載入靜態內容

2021-07-17 05:24:19 字數 3153 閱讀 9547

你要做的第一件事情是新建乙個 控制器 來處理靜態頁面,控制器就是乙個簡單的類, 用來完成你的工作,它是你整個 web 應用程式的 「粘合劑」 。

例如,當訪問下面這個 url 時:

通過這個 url 我們就可以推測出來,有乙個叫做 "news" 的控制器,被呼叫的方法為 "latest" , 這個方法的作用應該是查詢 10 條新聞條目並顯示在頁面上。在 mvc 模式裡,你會經常看到下面 格式的 url :

在正式環境下 url 的格式可能會更複雜,但是現在,我們只需要關心這些就夠了。

<?

phpclass

pages

extends

ci_controller

}

你剛剛建立了乙個 pages

類,有乙個方法 view 並可接受乙個 $page 引數。 pages

類繼承自 ci_controller

類,這意味著它可以訪問 ci_controller

類( system/core/controller.php )中定義的方法和變數。

控制器將會成為你的 web 應用程式中的處理請求的核心,在關於 codeigniter 的技術討論中,這有時候被稱作超級物件 。和其他的 php 類一樣,可以在 你的控制器中使用 $this

來訪問它,通過 $this

你就可以載入類庫、 檢視、以及針對框架的一般性操作。

現在,你已經建立了你的第乙個方法,是時候建立一些基本的頁面模板了,我們將 新建兩個檢視(頁面模板)分別作為我們的頁尾和頁頭。

<

html

>

<

head

>

<

title

>

codeigniter

tutorial

title

>

head

>

<

body

>

<

h1><?

phpecho

$title

;?>

h1>

頁頭包含了一些基本的 html **,用於顯示頁面的主檢視之前的內容。 另外,它還列印出了 $title

<

em>&

copy

;2015

em>

body

>

html

>

你剛剛新建了乙個控制器,裡面有乙個 view()

在該目錄中,再新建兩個檔案 home.php 和 about.php ,在每個檔案裡隨便 寫點東西然後儲存它們。如果你沒什麼好寫的,就寫 "hello world!" 吧。

為了載入這些頁面,你需要先檢查下請求的頁面是否存在:

public

function

view

($page

='home'

)$data

['title']=

ucfirst

($page

);// capitalize the first letter

$this

->

load

->

view

('templates/header'

,$data

);$this

->

load

->

view

('pages/'

.$page

,$data

);$this

->

load

->

view

('templates/footer'

,$data

);}

當請求的頁面存在,將包括頁面和頁尾一起被載入並顯示給使用者,如果不存在, 會顯示乙個 "404 page not found" 錯誤。

第一行檢查頁面是否存在,file_exists()

是個原生的 php 函式,用於檢查某個 檔案是否存在,show_404()

是個 codeigniter 內建的函式,用來顯示乙個預設的 錯誤頁面。

在頁標頭檔案中,$title

變數用來自定義頁面的標題,它是在這個方法中賦值的, 但是注意的是並不是直接賦值給 title 變數,而是賦值給乙個 $data

陣列的 title 元素。

最後要做的是按順序載入所需的檢視,view()

方法的第二個引數用於向檢視傳遞引數, $data

陣列中的每一項將被賦值給乙個變數,這個變數的名字就是陣列的鍵值。 所以控制器中 $data['title']

的值,就等於檢視中的$title

的值。控制器現在開始工作了!在你的瀏覽器中輸入 [your-site-url]index.php/pages/view

來檢視你的頁面。當你訪問index.php/pages/view/about

時你將看到 about 頁面, 包括頁頭和頁尾。

使用自定義的路由規則,你可以將任意的 uri 對映到任意的控制器和方法上,從而打破 預設的規則:

陣列賦值的**。

codeigniter 從上到下讀取路由規則並將請求對映到第乙個匹配的規則,每乙個規則都是 乙個正規表示式(左側)對映到 乙個控制器和方法(右側)。當有請求到來時,codeigniter 首先查詢能匹配的第一條規則,然後呼叫相應的控制器和方法,可能還帶有引數。

你可以在關於 uri 路由的文件 中找到更多資訊。

這裡,第二條規則中 $routes

陣列使用了萬用字元 (:any)

可以匹配所有的請求, 然後將引數傳遞給 pages

類的view()

方法。現在訪問 index.php/about

。路由規則是不是正確的將你帶到了控制器中的 view()

方法?實在是太棒了!

CI框架 載入靜態內容

首先,你需要建立乙個可以處理靜態內容請求的控制器類。控制器,是乙個用來 完成某項任務的php類,它充當基於mvc架構應用程式的 粘合劑 譯者注 控制器用來粘合 協調不同模型和檢視。隨著教程的深入,你會更深刻的理解這一點 舉例來說,假設存在某個針對如下url的請求 仔細觀察此url位址,我們可以猜測它...

CI 框架各類庫的載入方法

1 核心類庫 核心類庫位於 system core 自動載入 控制器中使用方式 直接使用 aa this config base url bb this uri uri string 其他位置使用 ci get instance aa ci config base url aa ci uri uri...

ci框架 CI超級物件

目錄結構說明 license.txt 許可協議 user guide 使用者手冊 system 框架核心檔案 index.php 入口檔案 mvc1.入口檔案。唯一乙個讓瀏覽器直接請求的指令碼檔案 2.控制器controller 協調模型和檢視 3.模型 提供資料,儲存資料 4.檢視view 只負責...