【问题标题】:How should I use Component in Helper?我应该如何在 Helper 中使用 Component?
【发布时间】:2012-06-15 16:49:20
【问题描述】:

我在 AkisHelper 中使用了 AkismetComponent,我的 AkisHelper 代码是:

<?php
App::uses('AppHelper', 'View/Helper');

class AkisHelper extends AppHelper {

    public $helpers = array('Html');
    public $components = array('Akismet');

    function isValid() {
        if ($this->Akismet->isKeyValid()) {
            echo 'OK';
        } else {
            echo 'Error';
        }
    }

}

但是发生了这个错误:

Error: Call to a member function isKeyValid() on a non-object
File: /var/www/cakeblog/app/View/Helper/AkisHelper.php
Line: 10

请帮我解决我的问题。 谢谢

【问题讨论】:

    标签: cakephp cakephp-2.2


    【解决方案1】:

    你不应该能够 n_n.. 这不是 MVC,这就像试图在视图中调用控制器方法。

    但是,您始终可以将变量传递给 Akismet 组件中的视图,例如:

    class AkismetComponent extends Component {
    
        private $controller;
    
        public function initialize($controller) {
            $this->controller = $controller;
            //here I pass a variable to the view
            $this->controller->set('isKeyValid',$this->isKeyValid());
        }
    

    在您看来,像使用任何其他变量一样使用它:

    if(isset($isKeyValid) && $isKeyValid){
    }
    

    无论如何,如果您不想更改组件,您仍然可以从控制器传递变量。

    视图应该只用于显示信息。助手应该只是帮助你的函数,但它们不应该做业务逻辑。

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 2014-08-07
      • 2011-11-25
      • 2015-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 1970-01-01
      相关资源
      最近更新 更多