我想我可能在这里犯了一个错误。
尝试在控制器的时间帮助器中使用简单功能时,出现以下错误。在视图中使用相同的函数调用时,我没有收到错误。

以下是来自控制器的错误。
其次是失败的控制器代码。
其次是正在运行的视图代码。

任何帮助表示赞赏!

错误:

通知(8):未定义的变量:时间[APP / controllers / temp_users_controller.php,第25行]
代码$ checkTime = $ time-> gmt();
致命错误:在第25行的/var/www/studydeck/app/controllers/temp_users_controller.php中的非对象上调用成员函数gmt()

控制器:

TempUsersController类扩展了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);
}


}

视图:

echo $ time-> gmt();

更新:
我尝试了$ time = new TimeHelper();
我收到了错误
致命错误:在第23行的/var/www/studydeck/app/controllers/temp_users_controller.php中找不到类“ TimeHelper”

我确实有var $ helpers = array('Time')

也不是echo $ time-> gmt();在视图中工作而无需在任何地方实例化时间。

最佳答案

通常,您不使用控制器中的帮助器。
您在控制器中分配的数组用于在分析和呈现视图之前加载和实例化帮助程序类。

要在控制器中使用辅助程序,您需要确保正确加载(包括)了文件,并且您有一个实例可以使用。您还可以从控制器内部静态使用它们中的许多,尤其是不需要访问控制器对象的那些帮助器。

Cake为您提供了一项核心功能,可用于安全地包含文件。它甚至可以处理从哪里自动加载文件,因此您无需处理路径。

一个入门的例子。

<?php
    class TempUsersController extends AppController
    {
        public $name = "TempUsers";

        public function userCleanUp( ){
            // include the time helper
            App::import( 'Helper', 'Time' );
            $time = new TimeHelper;
            $checkTime = $time->gmt( );
            $this->set( 'checkTime',$checkTime );
        }
    }
?>

关于cakephp - CakePHP时间助手问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1779176/

10-17 00:00