我在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
请帮我解决我的问题。 谢谢
答案 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){
}
无论如何,如果您不想更改组件,您仍然可以从控制器传递变量。
视图应仅用于显示信息。帮助者应该只是帮助你的功能,但他们不应该做业务逻辑。
希望这有帮助