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