CodeIgniter使用另一个库扩展库+

时间:2013-07-22 18:01:33

标签: php codeigniter

我正在尝试使用以下代码扩展表单验证库:

class MY_Form_validation extends CI_Form_validation {

    public function __construct() {
        parent::__construct();
    }

    public function check_captcha($captcha)
    {
        if ($captcha == $this->session->userdata('captcha'))
        {
            return TRUE;
        }   else
        {
            $this->form_validation->set_message('check_captcha', "Please copy captcha again.");
            return FALSE;
        }
    }
}

当我运行验证时,我收到此错误:

Message: Undefined property: MY_Form_validation::$session
Filename: libraries/MY_Form_validation.php

我尝试在构造中加载会话库,但我再次出错。是否有在内部使用会话库的选项,或者我应该将会话值作为第二个参数传递给它吗?

2 个答案:

答案 0 :(得分:2)

如果您需要从库中访问另一个已加载的库,则需要访问codeigniter实例。

在扩展现有的表单验证库时,可以使用以下命令访问codeigniter实例:

$this->CI

因此,在您的情况下,您可以使用以下方式访问会话:

$this->CI->session->userdata('captcha')

答案 1 :(得分:0)

codeigniter中的

库必须获取CI对象的实例(在调用会话时您将其视为$ this。)

将以下内容添加到您的构造函数中:

$CI =& get_instance();

现在在引用CI对象的属性/方法时,只需使用$ CI而不是$ this:

if($captcha == $CI->session->userdata('captcha'))

等等。因此,当需要库外的东西时使用$ CI,否则,你可以使用$ this