0

我正在使用来自http://www.devarticles.in/的验证码组件

我已经导入了验证码组件,例如

    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;
}
4

2 回答 2

0

我猜你在 CakePHP 2.x 中使用它。CakePHP 2.x 的此验证码组件的最新工作版本可在作者的网站http://www.devarticles.in/cakephp/simple-captcha-component-for-cakephp/上找到

于 2013-04-15T06:52:13.127 回答
0

您需要在顶部声明 $Controller:public $Controller;

并将 startup() 更改为

function startup($controller) {

$this->Controller = $controller;

}

通常我在 initialize() 方法中分配 $controller。我不确定它是否可以在 startup() 方法中工作,但我认为它会。

有关更多信息,请参阅CakePHP组件部分。

于 2012-08-07T13:31:26.383 回答