2012-09-23 35 views
6

我正在關注製作新聞部分的Codeigniter website的教程。現在我收到第13行的一個未定義的屬性信息。Codeigniter未定義的屬性,或者我的控制器將如何停止擔心並學習愛這個模型

這是我的模型。 應用程序/模型/ articles_model

<?php 

class Articles_model extends CI_Model{ 

    public function __construct(){ 

     $this->load->database(); 
    } 

    public function get_article($slug = False){ 

     if ($slug === FALSE){ 

      $query = $this->db->get('articles'); 
      return $query->result_array(); 
     } 

     $query = $this->db->get('articles'); 
     return $query->result_array(); 
    } 

    $query = $this->db->get_where('articles', array('slug' => $slug)); 
    return $query->row_array(); 
} 

這裏是控制器。 應用/控制器/ articles.php

<?php 

class Articles extends CI_Controller{ 

    public function __contruct(){ 

     parent::__construct(); 
     $this->load->model('Articles_model'); 
    } 

    public function index(){ 

     //Message: Undefined property Articles::Articles_model  
     $data['articles'] = $this->Articles_model->get_article(); 
     $data['title'] = "Archive"; 

     $this->load->view('templates/header', $data); 
     $this->load->view('articles/index', $data); 
     $this->load->view('templates/footer'); 
    } 

    public function view($slug){ 

     $data['articles'] = $this->Articles_model->get_article($slug); 

     if(empty($data['articles'])){ 

      show_404(); 
     } 

     $data['title'] = $data['articles']['title']; 

     $this->load->view('templates/header', $data); 
     $this->load->view('articles/view', $data); 
     $this->load->view('templates/footer'); 
    } 
} 

這些都是我所建立的路由。 應用程序/配置/ routes.php文件

$route['articles/(:any)'] = 'articles/view/$1'; 
$route['articles'] = 'articles'; 
$route['default_controller'] = 'pages/view'; 
$route['(:any)'] = 'pages/view/$1'; 

我的數據庫看起來像這樣

mysql> describe articles 
+-------+--------------+------+-----+---------+----------------+ 
| Field | Type   | Null | Key | Default | Extra   | 
+-------+--------------+------+-----+---------+----------------+ 
| id | int(11)  | NO | PRI | NULL | auto_increment | 
| title | varchar(128) | NO |  | NULL |    | 
| slug | varchar(128) | NO | MUL | NULL |    | 
| text | text   | NO |  | NULL |    | 
+-------+--------------+------+-----+---------+----------------+ 

我已經使用屬性以大寫首字母,$this->Articles_model試過了,不行,$this->articles_model

我是否錯過了一些愚蠢的東西? 如果是這樣的話是什麼?
如果不是愚蠢的我該如何調試?

編輯

的print_r的輸出中,按照意見,不包含 「Articles_model」。第一層的東西超過我的頭,但CTRL-F不是。另外,Apache日誌提及這...

[Sun Sep 23 13:19:30 2012] [error] [client 127.0.0.1] PHP Fatal error: Call to a member function get_article() on a non-object in /home/noel/dev/web/ 
ci/CodeIgniter_2.1.2/application/controllers/articles.php on line 13 

EDIT1

我想我固定它,但是沒有,看到我的答案評論。由於某種原因,$this->article_model不是一個對象。

爲什麼?我去過一次世界博覽會,一次野餐和一場牛仔競賽,而這是我聽過的最愚蠢的事情是通過一組耳機。你確定你有今天的代碼?

+1

在第12行,即將出現錯誤之前。做一個'print_r($ this);'。在對象屬性的第一層(希望這不在你的頭上,儘管它可能......)尋找「Articles_model」。如果您不確定它是否是第一層,請嘗試使用'print_r'的某些輸出來更新您的問題,以便我們可以爲您提供更多幫助。 – Webnet

+0

完成。更新OP。謝謝。仍然沒有快樂。 – noel

+1

這個,夥計們,你是如何標題的。 – SomeKittens

回答

2

有定睛一看,答案很簡單:嘗試改變這一行:

public function __contruct(){ 

這樣:

public function __construct(){ 

;)

+0

那看起來很可疑。在我修好之後,我發現了一些小錯誤,現在它可以正常工作。馬洛。 – noel

0

我發現了這個問題。它在routes.php中。這些線

$route['articles/(:any)'] = 'articles/view/$1'; 
$route['articles'] = 'articles'; 

我改這個...

$route['articles/(:any)'] = 'Articles/view/$1'; 
$route['articles'] = 'Articles'; 

而現在,我收到了404,因爲我的數據庫是空的,符合市場預期。仍然不知道爲什麼這些規則...

$route['default_controller'] = 'pages/view'; 
$route['(:any)'] = 'pages/view/$1' 

從第一個教程工作沒有「網頁」被大寫。世界永遠不會知道...

+0

船長日誌,這實際上沒有工作。虛驚。仍然沒有快樂。實際上,由於CI無法找到控制器,所以可疑的chaging路由實際上返回了404。旅程繼續。爲什麼不是$ this-> articles_model模型? **我不會在地獄中喋喋不休,你是如何做到的,你只是讓我到小學,你聽到了!** – noel

0

首先,關於評論:print_r($this);是一個非常糟糕的主意,因爲它只會讓你感到困惑。 $this幾乎不包含ci的東西。你正在尋找的是print_r(get_instance());

關於你的問題:ci lowercases成員名稱。你行更改爲這一點,你是好去:

$this->articles_model->get_article(); 
+0

嗯,我試着改變已經在OP中的那一行。 'print_r(get_instance())'與'print_r'一樣令人困惑,只是一個巨大的數組在頁面上滾動。感謝您的嘗試。 – noel

+0

對不起,錯過了關於大寫的說明。你有沒有仔細看看那個'print_r'的輸出?你的模特不在那裏? – Chronial

+0

我做了一個CTRL-F來查找它,但「Articles_model」只出現在錯誤信息中,而不是print_r()數組中。 – noel

相關問題