我应该如何在Helper中使用Component?

时间:2012-06-15 16:49:21

标签: cakephp cakephp-2.2

我在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

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

1 个答案:

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

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

视图应仅用于显示信息。帮助者应该只是帮助你的功能,但他们不应该做业务逻辑。

希望这有帮助