--------------------------------------------------------------------------------------------------------
載入視圖
$this->load->view('home/name'); //可以用子文件夾存儲視圖,默認視圖文件以'.php'結尾
載入多個視圖
$data['title'] = 'chenwei'; //給視圖添加動態數據
$data['message'] = 'Your message';
$this->load->view('header', $data); //當一次性載入多個視圖時,你只需在第一個視圖傳入數據即可(header視圖顯示title, content視圖顯示message)
$this->load->view('menu');
$this->load->view('content');
$this->load->view('footer');
使用對象的例子:
$data = new Someclass();
$this->load->view('blogview', $data);
視圖文件中的變量
<title><?php echo $title; ?></title>
<div><?php echo $message; ?></div>
創建循環
class Blog extends CI_Controller{
function index()
{
$data['todo_list'] = array('clean house', 'call mom', 'run errands');
$data['title'] = 'my real title';
$data['heading'] = 'my real heading';
$this->load->view('blogview', $data);
}
}
<title><?php echo $title; ?></title>
<h1><?php echo $heading; ?></h1>
<ul>
<?php foreach($todo_list as $item):?>
<li><?php echo $item; ?></li>
<?php endforeach; ?>
</ul>
獲取視圖內容(賦值給一變量)
$buffer = $this->load->view('blogview', $data, true);
//view函數第三個可選參數可以改變函數的行為。如果將view第三個參數設置為true(布爾),則函數返回數據。view函數缺省行為是 false,將數據發送到浏覽器。如果想返回數據,記得將它賦到一個變量中。
@黑眼詩人:參考用戶手冊 PHP替代語法
視圖文件的PHP替代語法 =>
config/config.php中打開$config['rewrite_short_tags'],那麼如果你的服務器不支持短標記,CodeIgniter將重寫所有短標記。
注:如果你使用這個特性,如果在你的視圖文件中發生 PHP 錯誤,則錯誤信息和行號將無法准確顯示。相反,所有的錯誤將顯示為 eval () 的錯誤。
正常的echo形式:<?php echo $variable; ?>
使用替代語法:<?=$variable?>
替代控制結構
<ul>
<?php foreach($todo_list as $item): ?>
<li><?=$item?></li>
<?php endforeach; ?>
</ul>
注:這裡沒有大括號。相反,結束大括號被替換成了 endforeach 。上面列出的每一個控制結構也有相似的關閉語法:endif, endfor, endforeach 和 endwhile,並且在每個結構以後注意不要使用分號(除了最後一個),用冒號!
<?php if($username == 'chenwei'): ?>
<h3>Hi chenwei.</h3>
<?php elseif($username == 'joe'): ?>
<h3>Hi Joe</h3>
<?php else: ?>
<h3>Hi unknow user</h3>
<?php endif; ?>
----------------------------------------<www.chenwei.ws>----------------------------------------
模型類文件均存放在 application/models 目錄,當然也可以建立子目錄,便於大型項目開發管理。
基本的模型類
1.類名首字母必須大寫,其它字母小寫,確保繼承基本模型類CI_Model,文件名是模型類名的小寫形式。
2.模型可以在控制器中被引用。
如:$this->load->model('User_model'); 或 $this->load->model('home/User_model');
模型一旦被載入 就可以使用,默認情況下模型名稱直接被引用作為對象名。
如:$this->User_model->function();
當然可以重新命名對象名,通過在加載模型函數中指定第二個參數來設定。
如:$this->load->model('User_model', 'fubar');
$this->fubar->function();
自動載入模型
如果需要特定模型在整個項目中起作用,可以讓CI在初始化時自動裝載,通過在application/config/autoload.php文件的自動裝載數組中添加該模型。
連接到數據庫
模型被載入時不會自動連接數據庫,以下方法可以使你連接數據庫,
1.標准方法連接數據庫
2.把第三個參數設置為TRUE來使模型裝載函數自動連接數據庫
$this->load->model('User_model', '', TRUE);
3.手動設定第三個參數來載入你的自定義數據庫配置
$config['hostname'] = 'localhost';
$config['username'] = 'root';
$config['password'] = 'root';
$config['database'] = 'test';
$config['dbdriver'] = 'mysql';
$config['dbprefix'] = '';
$config['pconnect'] = FALSE;
$config['db_debug'] = TRUE;
$this->load->model('User_model', '', $config);
//注:自動連接數據庫和手動連接數據庫時,消耗的內存情況一樣。
完整示例:
class User_model extends CI_Model{
var $title = '';
var $connect = '';
var $data = '';
function __construct()
{
parent::__construct();
}
function get_last_ten_entries()
{
$query = $this->db->get('entries', 10);
return $query->result();
}
function insert_entry()
{
$this->title = $this->input->post('title'); //接收POST提交的數據,使用了input類
$this->content = $this->input->post('content');
$this->date = time();
$this->db->insert('entries', $this);
}
function update_entry()
{
$this->title = $this->input->post('title');
$this->content = $this->input->post('content');
$this->date = time();
$this->db->update('entries', $this, array('id'=>$this->input->post('id')));
}
}
//上面用到的函數是 Active Record 數據庫函數
-----------------------------------------------------------------------------------------------------
控制器文件一般保存在application/controllers/ 文件夾:
默認URL路由配置 $config['uri_protocol'] = 'AUTO'; //默認即pathinfo模式,可選
注:類名必須大寫字母開頭,首字母小寫屬於無效寫法。
基本的控制器類
class Blog extends CI_Controller{
public function __construct()
{
parent::__construct();
//構造函數並不能返回值,但是可以用來設置一些默認的功能。確保你的控制器擴展自父控制器類,以便它能夠繼承其所有的方法。
}
public function index()
{
echo 'Hello World!';
}
public function comments()
{
$this->load->view('comment');
}
}
//使用 example.com/index.php/blog/comments 來訪問 comments方法
定義默認控制器
application/config/routes.php 中 $route['default_controller'] = 'Blog';
將控制器放入子文件夾
在application/controllers 目錄下新建目錄,放入控制器即可。注:如果你要使用某個子文件夾下的功能,就要保證 URI 的第一個片段是用於描述這個文件夾的。application/index.php/home/blog/comments/123
私有方法:
private function _test()
{
return $variable = 'aaa'; //即使不加修飾詞private,只要方法名字前帶下劃線(_)做前綴,即為私有方法,無法通過URL訪問。
}
保留的方法名稱:
控制器類名不能為index, 如 class Index extends CI_Controller{},因為index為CI默認方法名,包含在保留字內,具體參考保留字。
重新定義方法的調用規則:
_remap();
處理輸出:
_output(); 詳細參考輸出類。
----------------------------------------------------------------------------------------------
哥們,首先把服務端程序和頁面程序理解清楚。frame是頁面代碼,和ci沒關系,如果你要控制某個frame的src的話,首先要給frame 的name屬性賦值,比如<frame name="main" src="xxx.html">
控制他的src,<a href="yyy.html" target="main">link</a>
CodeIgniter 是一個為用 PHP 編寫網絡應用程序的人員提供的工具包。它的目標是實現讓你比從零開始編寫代碼更快速地開發項目,為此,CI 提供了一套豐富的類庫來滿足通常的任務需求,並且提供了一個簡單的接口和邏輯結構來調用這些庫。CodeIgniter 可以將需要完成的任務代碼量最小化,這樣你就可以把更多的精力放到項目的開發上了。
CodeIgniter 是免費的
CodeIgniter 是經過 Apache/BSD-style 開源許可授權的,只要你願意就可以使用它。閱讀許可協議可獲得更多的信息。
CodeIgniter 是輕量級的
真正的輕量級。我們的核心系統只需要一些非常小的庫,這與那些需要更多資源的框架完全相反。額外的庫文件只在請求的時候加載,依需求而定,所以核心系統是非常快而且輕的。
CodeIgniter 是快速的
速度非常快。你要找到一個比 CodeIgniter 表現更優的框架應該很難吧。
CodeIgniter 使用 M-V-C 模型
CodeIgniter 使用了模型(Model)- 視圖(View)- 控制器(Controllers)的方法,這樣可以更好地使表現層和邏輯層分離。這對項目的模板設計者來說是非常有用的,它最小化了模板中的程序代碼量。我們在 MVC 各自的頁面中對此做了更多的介紹。
CodeIgniter 生成干淨的 URL
CodeIgniter 生成的 URL 非常干淨而且是對搜索引擎友好化的。不同於標准的字符串查詢方法,CodeIgniter使用了 基於段 的方法:
example.com/news/article/345注意:index.php 文件是被默認包含在 URL 中的,但是可以通過更改 .htaccess 文件來改變這個設置。
CodeIgniter 功能強大
CodeIgniter 擁有全范圍的類庫,可以完成大多數通常需要的網絡開發任務,包括: 讀取數據庫、發送電子郵件、數據確認、保存 session 、對圖片的操作,以及支持 XML-RPC 數據傳輸等。
CodeIgniter 是可擴展的
這個系統可以非常簡單的通過自定義類庫、輔助函數來進行擴展,或者也可以通過擴展類、系統鉤子來實現。
CodeIgniter 不需要模板引擎
雖然 CodeIgniter確實自帶了一個可選的模板解析器程序,但不要求你必須使用模板。模板引擎完全與本地化PHP代碼的性能需求不符,使用模板引擎我們要學習其語法,這最低限度只比學PHP基礎要容易一點點。考慮以下PHP代碼:<ul
<li<?=$name?</li
<?php endforeach; ?</ul再來對比模板引擎所使用的偽代碼:<ul
{foreach from=$addressbook item=name}
<li{$name}</li
{/foreach}</ul的確,例中模板引擎的代碼比較清晰,但這帶來一個性能問題,因為偽代碼要先被轉換成PHP才能運行。我們的目標是性能最大化
, 所以我們選擇不使用專用的模板引擎。
CodeIgniter 已徹底文檔化
程序員都喜歡寫代碼討厭寫文檔。當然我們也一樣,但是既然文檔和代碼本身一樣重要,我們就要完成它了。況且我們代碼資源極其干淨而且方便注釋。
CodeIgniter 擁有一個友好的用戶社區
你可以在我們的社區論壇中......余下全文>>