● Models
Model檔案名稱
Model_name是類別名稱。類別名稱必須第一個字母大寫其餘的字母小寫
檔案名稱是全部小寫的類別名稱
Model 只在 Controller 的函數中才會被載入/呼叫
Active Record 類別
class Blog_controller extends CI_Controller {
function blog() {
$this->load->model('Blog');
$data['query'] = $this->Blog->get_last_ten_entries();
$this->load->view('blog',$data);
}
}
● ViewsModel檔案名稱
Model_name是類別名稱。類別名稱必須第一個字母大寫其餘的字母小寫
檔案名稱是全部小寫的類別名稱
Model 只在 Controller 的函數中才會被載入/呼叫
Active Record 類別
class Blog_controller extends CI_Controller {
function blog() {
$this->load->model('Blog');
$data['query'] = $this->Blog->get_last_ten_entries();
$this->load->view('blog',$data);
}
}
Views無法直接被呼叫,它必須被Controller所呼叫。可一次載入多個views
收納子目錄: $this->load->view('folder_name/file_name'); // view資料夾裡的位置
新增動態資料到 View
可由 array 或是 object 的方式傳遞
By Array
$data = array(
'title' => 'My Title',
'heading' => 'My Heading',
'message' => 'My Message'
);
$this->load->view('blogview', $data);
By Object
$data = new Someclass();
$this->load->view('blogview', $data);
再到 Controller 中加入控制
<?php
class Blog extends CI_Controller {
function index() {
$data['title'] = "My Real Title";
$data['heading'] = "My Real Heading";
$this->load->view('blogview', $data);
}
}
?>
再到View裡更改成與資料相關的陣列變數名稱
<html>
<head>
<title><?php echo $title;?></title>
</head>
<body>
<h1><?php echo $heading;?></h1>
</body>
</html>
新增迴圈(Creating Loops)
在Controller可以送出多維陣列,不限為單變數。在View新增迴圈
Views 檔變換 PHP 句法
<ul>
<?php foreach ($todo_list as $item):?>
<li><?php echo $item;?></li>
<?php endforeach;?>
</ul>
Template Parser 類別
● Controllers
簡單來說就是 class 檔案,用來處理 URI
example.com/index.php/blog/ -> CodeIgniter 會嘗試在找一個 blog.php 的控制器
example.com/index.php/blog/index/ -> URI 的第二個分段,決定了控制器裡頭的那一個函數得被呼叫出來。
Class 命名必須要字首大寫
函數(Functions),參數
http://example.com/index.php/products/shoes/sandals/123
<?php
class Products extends CI_Controller {
public function shoes($sandals, $id) {
echo $sandals;
echo $id;
}
}
?>
定義預設控制器:
$route['default_controller'] = 'Blog' -> 不需要給予任何 URI 分段內容
_output() 負責接收最終的的輸出資料
-
● URL
分段式(segmented-based): http://example.com/class/function/ID
移除 index.php 檔案: 用 .htaccess 移除
[注意] 要先設定 Apache Mod_rewrite
Ps. 我加入AddModule mod_rewrite.c會有錯誤,所以並沒有加入
e.g. www/ 在 CI_Tutorial 這個專案的root(www/CI_Tutorial)資料夾,新增 .htaccess 並加入以下code
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|$)
RewriteRule ^(.*)$ CI_Tutorial/index.php/$1 [L,QSA]
如此一來,http://localhost/CI_Tutorial/(:any) 就同義於 http://localhost/CI_Tutorial/index.php/(:any)
$route['product/:num'] = "catalog/product_lookup";
如果"product"這個字在URL的第一片段,而且第二片段是數字,則轉而使用"catalog"類別
以及"product_lookup"方法。
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
一個在第一片段為"product"而第二片段是任何數字的URL將重新對應到"catalog"類別
以及"product_lookup_by_id"方法,匹配的數字將傳給這個函數作為變數。
簡單來說就是 class 檔案,用來處理 URI
example.com/index.php/blog/ -> CodeIgniter 會嘗試在找一個 blog.php 的控制器
example.com/index.php/blog/index/ -> URI 的第二個分段,決定了控制器裡頭的那一個函數得被呼叫出來。
Class 命名必須要字首大寫
函數(Functions),參數
http://example.com/index.php/products/shoes/sandals/123
<?php
class Products extends CI_Controller {
public function shoes($sandals, $id) {
echo $sandals;
echo $id;
}
}
?>
定義預設控制器:
$route['default_controller'] = 'Blog' -> 不需要給予任何 URI 分段內容
_output() 負責接收最終的的輸出資料
-
● URL
分段式(segmented-based): http://example.com/class/function/ID
移除 index.php 檔案: 用 .htaccess 移除
[注意] 要先設定 Apache Mod_rewrite
Ps. 我加入AddModule mod_rewrite.c會有錯誤,所以並沒有加入
e.g. www/ 在 CI_Tutorial 這個專案的root(www/CI_Tutorial)資料夾,新增 .htaccess 並加入以下code
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|$)
RewriteRule ^(.*)$ CI_Tutorial/index.php/$1 [L,QSA]
如此一來,http://localhost/CI_Tutorial/(:any) 就同義於 http://localhost/CI_Tutorial/index.php/(:any)
$route['product/:num'] = "catalog/product_lookup";
如果"product"這個字在URL的第一片段,而且第二片段是數字,則轉而使用"catalog"類別
以及"product_lookup"方法。
$route['product/(:num)'] = "catalog/product_lookup_by_id/$1";
一個在第一片段為"product"而第二片段是任何數字的URL將重新對應到"catalog"類別
以及"product_lookup_by_id"方法,匹配的數字將傳給這個函數作為變數。
沒有留言 :
張貼留言