PHP CI 框架簡單使用(二)


  我們簡單認識一下CI框架的MVC。示例代碼如下

//CI控制器文件Home.php


<?php
defined('BASEPATH') OR exit('No direct script access allowed');   //為了防止用戶直接通過文件路徑來訪問控制器,可以有效的防止跨站攻擊

class Home extends CI_Controller{   //繼承CI控制類,必須存在的
    public function __construct(){     
        parent::__construct();
        $this->load->model('Home_model');    //加載Model模型類
    }

    public function index(){
        echo 'Home頁面';
        $this->load->View('home/index');    //渲染home下的index視圖頁面,View可以小寫
    }

  

//CI模型類文件Hone_model.php


<?php

class Home_model extends CI_Model    
{
    
    function __construct()
    {
        parent::__construct();
        $this->load->database();    // 加載數據庫
    }

}

 

  頁面效果

 

 

  碰到的問題解決:

  1,在Linux部署訪問CI時出現錯誤 Unable to locate the model you have specified:*_model 時

  解決方法:出現上述問題是沒有找到指定的模型類,主要原因是因為在window環境下代碼不區分大小寫,所以默認model類文件名我小寫,但文件中類名必須要為大寫的,當我們將項目加載移植到Linux環境下時,Linux環境區分大小寫,所以導致類文件沒能找到,出現該問題,我們要修改模型類文件名和控制器中的加載名保持一致,要么全小寫要么首字母大寫,其余字母全小寫。模型類中的類名要保證是首字母大寫,其余小寫的格式。

  例如上例就保證了$this->load->model('Home_model'); 的加載名和模型類文件名一致都是Home_model。

  2,出現錯誤Message: Undefined property: Home::$load

  解決方法:出現上述問題是因為我們定義的控制器文件名(類名)使用了CI里的關鍵字導致命名沖突,解決方法有兩個,第一種修改控制器文件名和類名(此方法相對比較麻煩,我們推薦第二種方法) ,第二種在控制器種添加一個構造函數,寫法如下

    public function __construct(){
        parent::__construct();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM