开发者

Codeigniter: how to load constants, defined in a hook, in the constructor of my controller

开发者 https://www.devze.com 2023-03-29 07:57 出处:网络
The problem: I\'ve defined a few constants in my hook but I can\'t access them inside my sub-classed controller constructor.

The problem: I've defined a few constants in my hook but I can't access them inside my sub-classed controller constructor.

The code: A - the hook class:

class Settings extends CI_Hooks {

    p开发者_如何学Pythonublic 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 - the hook config:

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

C - the controller

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

The way I understand *post_controller_constructor* is that it loads after the controller is initialized but before the constructor is executed. Apparently my defined constants don't work in any constructor while constants from config/constants.php do work.

Any help and insights are greatly appreciated as hooks are totally new to me.


Well, post_controller_constructor happens just then. After the constructor has finished constructing the controller :-).

You need to have it fire at pre_controller and manage the instantiation of the model on your own, or you will have to wait until the controller's method is called before you can access the values. Sorry.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号