自动加载中添加了用户模型。并且因为将Contorller跳转到另一个控制器以改变视图,如移动登录到启用是不可能的,我使用重定向。但是在重定向之后,用户模型的成员值丢失了。
Login.php(Controller)
public function login_process()
{
$post = array();
$data = $this->input->post();
$account = $data['email'];
$result = $this->user->authenticate($account, $data['password']);
if ($result) {
$email = $this->user->email;
if ($this->user->email_confirmation_validation($email)) {
redirect('/login/form/');
}
else {
redirect('/activation/email_validation_gate/);
}
}
else {
redirect('/login/big_login_gate');
}
}
调用重定向('/ activation / email_validation_gate /'); 用户模型的数据丢失。
class User extends CI_Model
{
const COLLECTION = 'users';
private $_mongo;
private $_collection;
private $_user;
....
public function __get($attr)
{
if (empty($this->_user)) {
var_dump($this->_user);
return Null;
}
switch($attr) {
case 'email':
return $this->_user['email'];
case 'last_name':
return $this->_user['last_name'];
case 'first_name':
return $this->_user['first_name'];
case 'password':
return NULL;
default:
return (isset($this->_user[$attr])) ? $this->_user[$attr] : NULL;
}
}
public function load_data($user_id)
{
//$id = new MongoId($user_id);
$this->_user = $this->_collection->findOne(array('_id'=>$user_id));
var_dump('Mongo : '.$this->_user);
}
}
登录调用load_data ,并将用户信息保存到_user。重定向后,用户模型全部消失了。即使它是自动加载的。
Followin是用户模型转储 - var_dump($ this-> user);
array(8) { ["_id"]=> object(MongoId)#28 (1) { ["$id"]=> string(24) "5349f7acc69c40282b000029" } ["first_name"]=> string(9) "First Name" ["last_name"]=> string(3) "Last" ["password"]=> string(60) "$2y$10$Qd4aV95A/kAWmMgQg/rJZ.iLCBo10XQeTZ0JgWdhjsblgHc4kQYpG" ["email"]=> string(14) "test@test.com" ["birthday"]=> object(MongoDate)#29 (2) { ["sec"]=> int(336927600) ["usec"]=> int(0) } ["country"]=> string(2) "KR" ["gender"]=> string(4) "male" }
重定向后。
object(User)#16 (3) { ["_mongo":"User":private]=> object(DBConnection)#19 (2) { ["connection"]=> object(MongoClient)#20 (4) { ["connected"]=> bool(true) ["status"]=> NULL ["server":protected]=> NULL ["persistent":protected]=> NULL } ["database"]=> object(MongoDB)#21 (2) { ["w"]=> int(1) ["wtimeout"]=> int(10000) } } ["_collection":"User":private]=> object(MongoCollection)#22 (2) { ["w"]=> int(1) ["wtimeout"]=> int(10000) } ["_user":"User":private]=> NULL }
如上所示,重定向后所有数据都消失了。