6

アプリケーションのフックを作成しようとしていCodeigniterます。

で a をキャッチしようとしsessionていhookます。

フックをロードするコードは次のとおりです。

$hook['pre_controller'] = array(
  'function' => 'getNav',
  'filename' => 'LoadNav.php',
  'filepath' => 'hooks'
);

そして、フックにロードしようとしているコードは次のとおりです。

function getNav()
{
     $CI =& get_instance();
     $level = $CI->session->userdata('level');
}

次のエラーがスローされ続けます。

A PHP Error was encountered
Severity: Notice
Message: Trying to get property of non-object
Filename: hooks/LoadNav.php
Line Number: 7

私が間違っていることについて何か考えはありますか?get_instance メソッドが正しく機能していないようです。

助けていただければ幸いです、ありがとう

アラン

4

1 に答える 1

9

ドキュメントに従って、フックで$CIインスタンスにアクセスすることはできません。pre_controller

pre_controller フックコントローラーが呼び出される直前に呼び出されます。すべての基本クラス、ルーティング、およびセキュリティ チェックが完了しています。

Controllerへのアクセスを許可するCIget_instance()です。コントローラーがインスタンス化されるまで、取得するものは何もありませ

代わりに試してみpost_controller_constructorて、望ましい結果が得られるかどうかを確認してください。

system/Core/Controller.php

class CI_Controller {

// <snip>

    public static function &get_instance()
    {
        return self::$instance;
    }

}
    // END Controller class
于 2011-04-20T16:49:11.133 に答える