4

次のようにマルチレベル継承の使用に問題があります。

CI_Controllerクラスを拡張するトップレベルのコントローラーがあります

class Application extends CI_Controller
{
}

「Site」および「Admin」という名前のコントローラーは、アプリケーションコントローラーを次のように拡張します。

class Site extends Application
{
}

class Admin extends Application
{
}

そして最後に、クラス「User」と「Guest」が「Site」コントローラーを拡張します

class User extends Site
{
}

Class Guest extends Site
{
}

問題は、ユーザーおよびゲストコントローラーで、ページネーション、form_validationなどのコアライブラリを使用してロードできないことです。

$ this-> load-> library('pagination);

しかし、サイトコントローラーまたはアプリケーションコントローラーにライブラリをロードすると機能します。コアCI_Controllerとその子コントローラーを拡張するコントローラー。孫をロードしようとすると機能しません。

誰かがこれが起こっている理由を明確にすることができますか?ありがとう...

4

3 に答える 3

2

マルチレベルのコンストラクタークラスが設定されているのを見たことがありませんが、機能するはずです。

parent::__construct()各クラスのコンストラクターを呼び出していますか?

于 2012-07-11T11:36:22.867 に答える
1

チェックアウトCodeIgniterベースコントローラー、説明が含まれています。

于 2012-09-23T01:11:58.443 に答える
0
//-Create MY_Controller.php on application/core/MY_Controller.php
//contents of MY_Controller.php
class Application extends CI_Controller{
    function __construct(){
      // Call the CI_Controller constructor
      parent::__construct();        
    }
}
//that is all now you can inherit class (Application) anywhere in your project
于 2014-03-17T08:23:41.463 に答える