1. 程式人生 > >ci的控制器和視圖

ci的控制器和視圖

方法名 多個 libraries 方法 route 處理 IE () san

控制器代碼如下:

<?php
/**
 * 1. 文件和控制器名首字母必須大小
 * 2. index()方法,總是在第二段為空時被調用
 * 3. routes.php中定義默認控制器$route[‘default_controller‘] = ‘blog‘;
 * 4. 有子目錄控制器時,第一段代表目錄,或者使用查詢字符串d
 * 5. 如果方法名和類名相同,又沒有__construct,則這個方法名相當於__construct,
 * 6. 使用保留的方法名時,會覆蓋原來的方法
 */
class Blog extends CI_Controller
{
    public function index()
    {
        echo 
Hello World!; } public function comments() { echo Look at this!; } public function shoes($sandals=NULL, $id=NULL) { echo $sandals.<BR>; echo $id; } // 方法重映射,方法過濾,重寫方法規則 // public function _remap($method, $params = array()) // {
// $method = ‘process_‘.$method; // if (method_exists($this, $method)) // { // return call_user_func_array(array($this, $method), $params); // } // show_404(); // } // 輸出處理,先寫入緩存和設置http頭後才執行此方法 public function _output($output) { echo JABIN======
.$output.jljklj; // 先輸出$output if($this->output->cache_expiration > 0) { $this->output->_write_cache($output); } } // 私有方法用private或者方法前加下劃線, 只能內部訪問 private function _utility() { echo 4444; } // 構造函數,因為會覆蓋父類__construct,所以需要執行一次父類的__construct public function __construct() { parent::__construct(); } // }

視圖代碼如下:

Blog.php控制器======
<?php
/**
 * 1. view加載的.php文件後綴可省略
 * 2. $data為對象時,對象中的變量會轉為數組
* 3. 控制器調用視圖方式:$this->load->view(‘view_name‘),多個視圖自動合並
*/ class Blog extends CI_Controller { public function index() { $data[todo_list] = array(Clean House, Call Mom, Run Errands); $data[title] = YOUR TITLE; $data[heading] = MY REAL HEADING; $string = $this->load->view(blog/blogview, $data, TRUE); // 第三個參數設置結果返回字符串,默認為FALSE echo $string; } } blogview.php視圖====== <html> <head> <title><?php echo $title; ?></title> </head> <body> <h1><?php echo $heading; ?></h1> <h3>Todo List</h3> <ul> <?php foreach ($todo_list as $tl): ?> <li><?php echo $tl; ?></li> <?php endforeach; ?> </ul> </body> </html>

模型代碼:

<?php
/**
 * 1. 文件名和類名一致,且首字母大寫
 * 2. 控制器調用模型方式:$this->load->model(‘model_name‘, ‘other_name‘); // 第二個參數為別名
 * 3. 控制器使用模型方法:$this->model_name->method();
 * 4. 模型自動化加載,全局使用:application/config/autoload.php中添加到autoload數組中
 * 5. 鏈接數據庫:手動:$this->load->database();自動1:自動化加載$autoload[‘libraries‘] = array(‘database‘);自動2:$this->load->model(‘model_name‘, ‘‘, TRUE);等等
 */
class Blog_model extends CI_model
{
    public $title;
    public $content;
    public $date;

    public function __construct()
    {
        parent::__construct();
        $this->load->database();
    }

    public function get_last_ten_entries()
    {
        $query = $this->db->get(entries, 10);
        return $query->result();
    }
    public function insert_entry()
    {
        $this->title = $_POST[title];
        $this->content = $_POST[content];
        $this->time = time();

        $this->db->insert(entries, $this);
    }
    public function update_entry()
    {
        $this->title = $_POST[title];
        $this->content = $_POST[content];
        $this->date = time();

        $this->db->update(entries, $this, array(id=>$_POST[id]));
    }
}

ci的控制器和視圖