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

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

4

1 回答 1

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){
}

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

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

希望这可以帮助

于 2012-06-15T17:33:56.633 回答