views:

620

answers:

2

I am trying to load the cookie helper in my pre_controller hook for a 'remember me' function on our site. I thought that creating an instance of the CI object with $ci =& get_instance(); would allow me to access to loading helpers but this is not the case.

Thoughts?

 $ci =& get_instance();
 $ci->load->helper('cookie');
 // does not load
+1  A: 

The pre_controller hook executes before the super object has been fully constructed, so get_instance() can't work - the static object it returns a reference to hasn't yet been initialized.

Consider using the post_controller_constructor hook instead; your controller's constructor will have executed, and the CI super object will be available for use.

meagar
This worked wonderfully. Thanks!
Thomas
+1  A: 

The problem with the post_controller_constructor is it runs after the constructor (funnily enough) and if you use Controller constructors for lots of things this can be a problem.

If it's not a problem for you (your helper wont affect anything run or loaded in your constructors) fair enough, if it IS a problem you have two solutions.

  1. Instead of the hook put your code in MY_Controller
  2. Create MY_Controller and add in a custom hook point.

    class MY_Controller extends Controller {

    function MY_Controller()
    {
        parent::Controller();
        $GLOBALS['EXT']->_call_hook('pre_controller_constructor');
    } 
    

    }

Phil Sturgeon
Thanks for the input!
Thomas