문제

I used AkismetComponent in AkisHelper and my AkisHelper code is:

<?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';
        }
    }

}

But this error occured:

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

Please help me to solve my problem. Thanks

도움이 되었습니까?

해결책

Your not supposed to be able to n_n.. It's not MVC, it's like trying to call a controller method inside the view.

However you could always pass a variable to the view in your Akismet component, something like:

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());
    }

and in your view use it like any other variable:

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

Anyway, if you don't want to change the component, you could still pass the variable from the controller.

The view should be used only to display the information. Helpers should be only functions to help you with that, but they are not supposed to do business logic.

Hope this helps

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top