1

我创建了助手名称 TicketHelper(有 TicketsController)、CommonHelper(无控制器)和 ExcelHelper(无控制器)。在 TicketHelper 内部,调用 CommonHelper 的任何函数时都可以正常工作。这里以 TicketHelper 为例:

<?php
    class TicketHelper extends AppHelper {
    public $helpers = array('Session','Common');
    public function myFunction(){

        echo $this->Common->workfine();
    }
?>

通过我将 CommonHelper 调用到 ExcelHelper 的相同操作,它会产生错误:致命错误:调用非对象上的成员函数 workfine()

4

2 回答 2

2

经过几个小时的检查,我发现构造函数有错误问题

<?php
   class TicketHelper extends AppHelper {
   public $helpers = array('Session','Common');
   public function myFunction(){
    echo $this->Common->workfine();
   }

   //Here my problem constructor Note: function name and class name are the same 
   function TicketHelper (){
          //My code here
   }

   /**
    * It should be follow cakephp doc
    * function __construct($id = false, $table = null, $ds = null) {
    *        parent::__construct($id, $table, $ds);
    *       
    *  }
    *
    */

?>

于 2013-01-19T01:26:00.103 回答
0

您不应该在控制器中使用助手。帮助器用于视图中的逻辑。它包含在控制器中,但可以在视图中访问。对于控制器之间共享的逻辑,请使用组件而不是http://book.cakephp.org/2.0/en/controllers/components.html#creating-a-component

如果您仍想在控制器中使用助手(不推荐):

$view = new View($this);
$myHelper = $view->loadHelper('MyHelper');
于 2013-01-18T15:42:53.360 回答