cakephp2如何调用当前帮助器的另一个帮助器?

时间:2013-01-18 02:57:11

标签: cakephp-2.0

我创建了帮助名称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()

2 个答案:

答案 0 :(得分: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);
    *       
    *  }
    *
    */

&GT;

答案 1 :(得分:0)

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

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

$view = new View($this);
$myHelper = $view->loadHelper('MyHelper');