【问题标题】:CakePHP Custom Helper not workingCakePHP 自定义助手不起作用
【发布时间】:2014-08-08 05:49:30
【问题描述】:

我第一次创建自定义助手。我的控制器代码中出现错误,我正在对不存在的对象(助手)调用 aa 方法。但我相信我的助手“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

    }
}
?>

这里又是错误(和我贴在顶部的错误一样)

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

有人知道怎么回事吗?

【问题讨论】:

    标签: cakephp helper


    【解决方案1】:

    Helpers 将用于视图而不是控制器,但您可以这样做:

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

    【讨论】:

    • 如果 Helpers 实际上是为 Views 设计的,如果我们希望在 Controller 之间拥有可重用的代码,我们可以在 Cakephp 中使用什么?
    • 在这种情况下您可以使用组件,请在此处查看更多信息:: book.cakephp.org/2.0/en/controllers/components.html
    猜你喜欢
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    相关资源
    最近更新 更多