【问题标题】:CakePHP Time Helper ProblemCakePHP 时间助手问题
【发布时间】:2010-12-19 05:56:45
【问题描述】:

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

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

感谢任何帮助!

错误:

注意 (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();在视图中工作,无需在任何地方实例化时间。

【问题讨论】:

    标签: cakephp


    【解决方案1】:

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

    要在控制器中使用帮助程序,您需要确保文件已正确加载(包含)并且您有一个可以使用的实例。您还可以在控制器中静态使用其中的许多,特别是那些不需要访问控制器对象的助手。

    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 );
            }
        }
    ?>
    

    【讨论】:

      【解决方案2】:

      Helper 被认为是在视图中使用,而不是在控制器中,因此出现了错误。如果你真的必须在你的控制器中使用助手,你必须自己实例化它:

      $time = new TimeHelper();
      

      【讨论】:

        【解决方案3】:

        在这一行:

         $checkTime = $time->gmt();
        

        $time 变量未定义并自动设置为 null。该错误表明它不是一个对象(这是正确的)。您是否正确初始化它?我看不到 $time 变量的任何初始化。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-22
          • 2012-03-03
          相关资源
          最近更新 更多