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 に答える