執行代碼,我是相當新的笨,所以我可能要對這個錯誤的方式。在我的模板的標題,我有顯示賬戶信息或登錄消息中的位置。笨在每個控制器
爲了使其正常工作,每個控制器顯然需要有相同的代碼。爲了避免這種情況,用戶指南說我應該可以擴展CI_Controller,並自動包含該代碼。但是,這不適合我。這是我得到的。
應用/核心/ MY_Controller.php:
<?php
class MY_Controller extends CI_Controller {
function __construct()
{
parent::__construct();
$this->load->database();
$this->load->model('user_model');
if ($this->user_model->validateToken ($this->input->cookie('session_token', TRUE)))
{
$data['login_info'] = 'Logged in as '. $this->user_model->getUsernameAsLink($this->input->cookie('session_token', TRUE)).'<BR />
<a href="/dashboard">Control Panel</a>';
}
else
{
$data['login_info'] = 'You are not logged in<BR />
<a href="/account/login">Log In</a>';
}
}
}
?>
它所引用的模型:
<?php
class User_model extends CI_Model {
public function __construct()
{
}
public function validateToken($token)
{
// Get token from database to check against cookie
$query = $this->db->query('SELECT `login_token` FROM `Users` WHERE `login_token` = "'.$token.'"');
// Match Found?
$rowCount = $query->num_rows();
if ($rowCount == 1) {
return true;
} else {
return false;
}
}
public function getUsernameAsLink ($token)
{
// Get token from database to check against cookie
$query = $this->db->query('SELECT `username` FROM `Users` WHERE `login_token` = "'.$token.'"');
foreach($query->result() as $row) {
$username = $row->username;
}
$returnString = '<a href="/profile/'. $username .'">'.ucfirst ($username).'</a>';
return $returnString;
}
}
?>
我收到通知的錯誤說,$數據[ 'login_info']值沒有按」不存在。有什麼我遺漏,以防止處理擴展到MY_Controller?
你使你的所有其他控制器延伸'MY_Controller',而不是'CI_Controller'? – prodigitalson
是的,我所有的控制器當前正在擴展MY_Controller – Eric
它在哪裏說它不存在?在你包含的代碼中,沒有任何地方正在使用,只有設置。 – CWSpear