Captcha组件读取会话错误

时间:2012-08-03 08:29:00

标签: cakephp cakephp-2.0

我正在使用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;
}

2 个答案:

答案 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/