CodeIgniter視圖 & 模型 & 控制器,codeigniter_PHP教程

來源:互聯網
上載者:User

CodeIgniter視圖 & 模型 & 控制器,codeigniter


--------------------------------------------------------------------------------------------------------

載入視圖

  $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);

視圖檔案中的變數

  <?php echo $title; ?>

  

建立迴圈

  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);

    }

  }

  <?php echo $title; ?>

  

  

        

        

  •     

      

擷取視圖內容(賦值給一變數)

  $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形式:

使用替代文法:

替代控制結構

  

        

        

  •     

      

  註:這裡沒有大括弧。相反,結束大括弧被替換成了 endforeach 。上面列出的每一個控制結構也有相似的關閉文法:endif, endfor, endforeach 和 endwhile,並且在每個結構以後注意不要使用分號(除了最後一個),用冒號!

  

    

Hi chenwei.

  

    

Hi Joe

  

    

Hi unknow user

  

--------------------------------------------------------------------------------

模型類檔案均存放在 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(); 詳細參考輸出類。

----------------------------------------------------------------------------------------------


解codeigniter的frameset問題

哥們,首先把服務端程式和頁面程式理解清楚。frame是頁面代碼,和ci沒關係,如果你要控制某個frame的src的話,首先要給frame 的name屬性賦值,比如
控制他的src,link</a>
 

CodeIgniter 是什?

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代碼:


  • {foreach from=$addressbook item=name}
    </li
    {/foreach}</ul的確,例中模板引擎的代碼比較清晰,但這帶來一個效能問題,因為虛擬碼要先被轉換成PHP才能運行。我們的目標是效能最大化
    , 所以我們選擇不使用專用的模板引擎。
    CodeIgniter 已徹底文檔化
    程式員都喜歡寫代碼討厭寫文檔。當然我們也一樣,但是既然文檔和代碼本身一樣重要,我們就要完成它了。況且我們代碼資源極其乾淨而且方便注釋。
    CodeIgniter 擁有一個友好的使用者社區
    你可以在我們的社區論壇中......餘下全文>>
     

    http://www.bkjia.com/PHPjc/851761.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/851761.htmlTechArticleCodeIgniter視圖 模型 控制器,codeigniter -------------------------------------------------------------------------------------------------------- 載入視圖 $this-load-vi...

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.