I think I might be making a mistake here.
I am getting the following error when trying to use a simple function in the time helper in my controller. I don’t get an error when using the same function call in the view.
Below is the error from the controller.
Followed by the controller code that is failing.
Followed by the view code that is working.
Any help is appreciated!
Error:
Notice (8): Undefined variable: time [APP/controllers/temp_users_controller.php, line 25]
Code $checkTime = $time->gmt();
Fatal error: Call to a member function gmt() on a non-object in /var/www/studydeck/app/controllers/temp_users_controller.php on line 25
Controller:
class TempUsersController extends AppController {
var $name = 'TempUsers';
var $scaffold;
var $components = array('Auth');
var $helpers = array('Time');
function beforeFilter() {
//list of actions that do not need authentication
$this->Auth->allow('userCleanUp');
}
//this function will delete TempUser accounts which have not been activated
function userCleanUp() {
$checkTime = $time->gmt();
$this->set('checkTime',$checkTime);
}
}
View:
echo $time->gmt();
Update:
I tried $time = new TimeHelper();
I received the error
Fatal error: Class ‘TimeHelper’ not found in /var/www/studydeck/app/controllers/temp_users_controller.php on line 23
I do have var $helpers = array(‘Time’)
Also not that echo $time->gmt(); works in the view with out instantiating time anywhere.
You generally don’t use a helper from the controller.
The array you assign in the controller is used to load and instantiate the helper classes before the view is parsed and rendered.
To use the helper in your controller you need to make sure the file is loaded ( included ) correctly and that you have an instance of it to work with. You can also use many of them statically from within a controller, expecially those helpers that don’t need access to the controller object.
Cake provides you with a core function that you can use to safely include the files. It will even handle where the file gets loaded from automagically so you don’t need to deal with paths.
An example to get you started.