2011-08-19 18 views
0

問題: 私のフックでいくつかの定数を定義しましたが、サブクラス化されたコントローラコンストラクタ。Codeigniter:コントローラのコンストラクタでフックで定義された定数をロードする方法

コード: A - フッククラス:

class Settings extends CI_Hooks { 

    public function load_settings() { 
     $CI =& get_instance(); 
     $CI->load->model('hooks/settings_model'); 
     $data = $CI->settings_model->load_settings(); 
     define('MEMBERS_PER_PAGE', $data['members_per_page']); 
     define('REGISTER_ENABLED', $data['register']); 
     define('SITE_ACCESS_ENABLED', $data['site_access']); 
     define('ADMIN_EMAIL', $data['admin_email']); 
    } 

} 

B - フックの設定:

$hook['post_controller_constructor'] = array(
           'class' => 'settings', 
           'function' => 'load_settings', 
           'filename' => 'settings.php', 
           'filepath' => 'hooks' 
           ); 

C - コントローラ

class MY_Controller extends CI_Controller 
{ 
    public function __construct() 
    { 
     parent::__construct(); 
     defined('SITE_ACCESS_ENABLED') ? print SITE_ACCESS_ENABLED : print "NULL"; 
    } 
} 

方法I理解してください* post_controller_constructor *は、tコントローラーは初期化されているが、コンストラクターが実行される前に初期化されます。どうやら私の定義した定数はどのコンストラクタでも動作しませんが、定数はconfig/constants.phpから動作します。

フックは全く新しいものですから、どんな助力や洞察力があれば幸いです。

答えて

0

まあ、post_controller_constructorはまあまあです。コンストラクタがコントローラの構築を完了した後:-)。

pre_controllerで起動し、モデルのインスタンス化を自分で管理する必要があります。または、値にアクセスする前にコントローラのメソッドが呼び出されるまで待つ必要があります。ごめんなさい。

+0

謝罪する必要はありません。明確な答えをお寄せいただきありがとうございます。私はフックを捨てて、それ以外のやり方をすることにしました。 – qwertzman

関連する問題