2014-09-04 50 views
2

我从CodeIgniter中的Flex Auth开始,我应该错过或误解某些东西。

任何想法为什么这段代码给出了“从空值创建默认对象”错误?

我的代码:

$this->load->library('flexi_auth'); 

$email = '[email protected]'; 
$username = 'nils'; 
$password = 'nilsnils'; 
$user_data = ''; 
$group_id = 1; 
$activate = TRUE; 

$this->flexi_auth->insert_user($email, $username, $password, $user_data, $group_id, $activate); 

出口();

的其他尝试以虚假为$ USER_DATA:

$this->flexi_auth->insert_user($email, $username, $password, FALSE, $group_id, $activate); 

给出了同样的错误。

用户被添加到数据库。 但有此错误在页面上:

A PHP Error was encountered 
Severity: Warning 
Message: Creating default object from empty value 
Filename: models/flexi_auth_lite_model.php 
Line Number: 47 

这是在型号/ flexi_auth_lite_model.php线47:

$this->auth->session_name = $this->config->item('sessions','flexi_auth'); 

我没有在互联网上找到的东西,我可以理解为“flexi_auth-> insert_user“和”从空值创建默认对象“。

感谢您的帮助。 Nils。

回答

2

今天我在新安装中遇到了这个问题。事实证明,在加载flexi-auth库之前,必须将$ this-> auth声明为控制器中的标准类对象。这在演示验证控制器(demo-files/application/controllers/auth.php,第27-29行)中有记录,但不在安装说明中。您需要的代码是:

// IMPORTANT! This global must be defined BEFORE the flexi auth library is loaded! 
// It is used as a global that is accessible via both models and both libraries, without it, flexi auth will not work. 
$this->auth = new stdClass; 

// Load 'standard' flexi auth library by default. 
$this->load->library('flexi_auth'); 

我正在使用自定义MY_Controller,因此我将代码添加到构造函数中。

相关问题