6

ニュースセクションの作成について、 CodeigniterWebサイトのチュートリアルに従っています。現在、13行目に未定義のプロパティメッセージが表示されています。

これが私のモデルです。アプリケーション/モデル/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');
    }
}

これらは私が設定したすべてのルートです。アプリケーション/config/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

編集1

私はそれを修正したと思いましたが、いいえ、私の答えのコメントを参照してください。何らかの理由$this->article_modelでオブジェクトではありません。

なんで?私は1つの万国博覧会、ピクニック、ロデオに行ったことがありますが、それは私が今まで聞いた中で最も愚かなことです。あなたは今日のコードを手に入れましたか?

4

3 に答える 3

2

よく見てみると、答えは非常に簡単です。次の行を変更してみてください。

public function __contruct(){

これに:

public function __construct(){

;)

于 2012-09-24T01:34:00.417 に答える
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'

「ページ」を大文字にしない最初のチュートリアル作業から。世界は決して知りません...

于 2012-09-24T00:12:25.337 に答える
0

まず、コメントに関して:print_r($this);それはあなたを混乱させるだけなので、非常に悪い考えです。$thisciのものはほとんど含まれていません。あなたが探しているのはprint_r(get_instance());

あなたの問題に関して:ciはメンバー名を小文字にします。あなたのラインをこれに変えてください、そしてあなたは行ってもいいです:

$this->articles_model->get_article();
于 2012-09-24T01:12:33.757 に答える