2017-02-04 15 views
0

私はCodeigniterプロジェクトで奇妙な問題に直面しています。異なるサブフォルダからCodeigniterを読み込むモデル

私は、次のパスに2つのモデルファイルがあります。それぞれのフロントエンドとバックエンドモデルの場合

models/public/Dish_model.php 
models/admin/Dish_model.php 

を。次のパスにあるコントローラで

controllers/admin/Dish.php 

私が使用して管理エリアのモデルファイルをロードしようとしています:

$this->load->model('admin/dish_model'); 

をしかし、それは公共のモデルファイルをロードしています。

この行をコメントアウトしても、パブリックモデルファイルはまだ読み込まれます。

これは突然すべてうまくいきました。以前はうまくいきましたが、私はこのファイルを最近変更していません。

助けが必要ですか?

+1

別のモデルファイルをロードしていることをどのように知っていますか?代わりの方法を使用してください。 $ this-> load-> model( 'admin/dish_model'、 'amodel');そしてこのように使う '$ this-> amodel-> method();' –

+0

私はそれぞれから関数を呼び出そうとしたので知っている他のモデルの1つだけが働いた! –

+0

私はあなたの提案を試しました...違いはありません:\ –

答えて

1

他の誰かが同じ問題に遭遇した場合。

私の場合、コントローラの実行パスに注意深く従った後、他のモデルがオートロードリストのライブラリによってロードされていることがわかりました。

このライブラリをオートロードアレイから削除すると、問題は解決しました。

0

サブディレクトリまたはサブフォルダからモデルを呼び出し/ロードする。

models/public/Dish_model.php 

のはDish_model

class Dish_model extends CI_Model{ 
    public function __construct(){ 
     parent::__construct(); 
    } 
    public function the_method(){ 
     return 'return value'; 
    } 
} 

modelsに言わせて、それはサブディレクトリですpublicネイティブのCIモデルのディレクトリだと。そうDish_modelコントローラそれは別名のようなものです

$this->load->model('public/Dish_model','DModel'); 

DModelでこれを行うロードします。 ので、コントローラからモデルを呼び出すために

echo $this->DModel->the_method(); 

あり、それはreturn value がその助けを願って返します。

関連する問題