CakePHP Custom Helper无法正常工作

时间:2014-06-18 04:16:03

标签: cakephp helper

我第一次创建自定义助手。我在我的控制器代码中收到一个错误,我在一个不存在的对象(帮助器)上调用了一个方法。但我相信我的助手" BM"正在加载成功,因为我没有在加载助手时出现任何错误。

Error: Call to a member function mcpGetActiveMerchantID() on a non-object   
File: C:\wamp\www\bm\app\Controller\MCPController.php   
Line: 412

我已将BMHelper.php放入我的View \ Helper \目录。

<?php
class BMHelper extends AppHelper{   
    public function mcpGetActiveMerchant(){
        return $this->Session->read('Auth.ActiveMerchant');
    }
    public function mcpGetActiveMerchantID() {
        $activemerchant = $this->Session->read('Auth.ActiveMerchant');
        foreach($activemerchant as $key => $value) {
            $merchant_id = $key; 
        }
        return $merchant_id;
    }
}

?>

然后在我的控制器中我有这个:

<?php
class MCPController extends AppController {

    public $helpers = array('Html', 'Form', 'Session','BM','Js' => array('Jquery'));

    public function walkinadd() {

        $test = $this->BM->mcpGetActiveMerchantID(); //Line 412

    }
}
?>

HEre再次出错(与我在顶部粘贴的错误相同)

Error: Call to a member function mcpGetActiveMerchantID() on a non-object   
File: C:\wamp\www\bm\app\Controller\MCPController.php   
Line: 412

任何人都知道出了什么问题?

1 个答案:

答案 0 :(得分:1)

Helpers将在Views not Controllers中使用,但您可以这样做:

public function walkinadd() {
    $view = new View($this);
    $bm = $view->loadHelper('BM');
    $test = $bm->mcpGetActiveMerchantID();
}