2012-10-11 69 views
0

執行代碼,我是相當新的笨,所以我可能要對這個錯誤的方式。在我的模板的標題,我有顯示賬戶信息或登錄消息中的位置。笨在每個控制器

爲了使其正常工作,每個控制器顯然需要有相同的代碼。爲了避免這種情況,用戶指南說我應該可以擴展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?

+0

你使你的所有其他控制器延伸'MY_Controller',而不是'CI_Controller'? – prodigitalson

+0

是的,我所有的控制器當前正在擴展MY_Controller – Eric

+0

它在哪裏說它不存在?在你包含的代碼中,沒有任何地方正在使用,只有設置。 – CWSpear

回答

1

對於$data在你的其他控制器可用,則需要使其可用。嘗試將其設置爲$this->data並在其他控制器中使用相同的東西。

+0

我改變了所有$數據引用在我的控制器被$ this->數據,並將其傳遞給我的看法,但它仍然沒有從MY_Controller將數據傳遞到下一個控制器。還有什麼需要做的嗎? – Eric

+0

您是否在'MY_Controller'和您的其他控制器中將它用作'$ this-> data'? – CWSpear

+0

從這裏開始,在所有控制器中使用$ this-> data。謝謝! – Eric