我正在使用http://www.devarticles.in/
中的Captcha组件我导入了像
这样的验证码组件 App::import('Component', 'Captcha'); //load it
$this->Captcha = new CaptchaComponent(new ComponentCollection()); //make instance
$this->Captcha->startup($this);
但是当我尝试将函数调用为
时 $captcha = $this->Captcha->getVerCode();
它给我错误
Call to a member function read() on a non-object in C:\xampp\htdocs\westudy_old\app\Controller\Component\CaptchaComponent.php on line 65
我的组件功能是
function getVerCode() {
return $this->Controller->Session->read('security_code');
}
和组件的启动功能是
function startup() {
$this->Controller = $this->_controller;
}
答案 0 :(得分:0)
您需要在顶部声明$ Controller:public $Controller;
将startup()更改为
function startup($controller) {
$this->Controller = $controller;
}
通常我在initialize()方法中分配$ controller。我不确定它是否可以在startup()方法中工作,但我认为它会。
有关详细信息,请参阅CakePHP组件部分。
答案 1 :(得分:0)
我猜你在CakePHP 2.x中使用它。 CakePHP 2.x的这个验证码组件的最新工作版本可在作者的网站上找到http://www.devarticles.in/cakephp/simple-captcha-component-for-cakephp/