2013-08-21 82 views
0

我是codeigniter的新手。我有一個控制器users,它加載了一個login視圖。codeigniter - 將消息傳遞給查看

class user extends CI_Controller { 
    function __construct() 
    { 
     parent::__construct(); 
     $this->load->helper(array('form')); 
    } 
    public function login() 
    { 
     $this->load->model('user_images'); 
     $data = $this->load->model('login'); 
     $this->load->view('login', $data); 
    } 
} 

login模型我處理所有的驗證和處理。如果存在驗證錯誤或類似情況,我將返回$data['msg'] = 'some error message';我通過$data = $this->load->model('login');將此數據傳遞至$this->load->view('login', $data);,並在視圖中回顯$msg。然而,在提交表單過程後,如果我輸入了正確的憑證,我將登錄,但是如果我輸入了錯誤的憑證,則驗證錯誤不會傳遞給視圖。我將這個項目從一個非框架環境轉移過來,所以我確信驗證規則可以工作.etc。我只是不確定爲什麼消息沒有在視圖上解析。

+1

如果您使用codeigniter然後使用代碼點火器表單驗證 - 它大大簡化了錯誤的消息傳遞。對於驗證失敗的表單 - 它可以插入以前的表單值。 – cartalot

回答

1

看起來你收到此錯誤

$data = $this->load->model('login'); 

負載>模型()負載login_model,並使其可通過方法

$這個 - >登錄 - > youMethodHere( )。

f有驗證錯誤或類似的情況我返回$ data ['msg'] ='有錯誤信息';我通過$ data = $ this-> load-> model('login')傳遞這些數據;到$ this-> load-> view('login',$ data);

當您從方法/函數返回某些內容時,您不會返回該變量。你返回變量的值。

您應該將您的方法添加到login_model(也許這應該是user_model ...)並返回前。來自模型的數組或mysqli結果集。放棄模型返回的內容應該設置數據。

$this->load->model('user_model'); 
$login_succes = $this->user_model->login($username, $password); 
if($login_success) 
{ 
    $data['msg'] = 'hurrah you did it 
    ... 
+0

so theres沒辦法,我可以從類訪問錯誤變量,因爲在我的constructer我處理我想處理的一切,否則我將不得不將移動構造函數到控制器?我真的很想不必重寫這個... http://ideone.com/Ji4oVd ...以前,而不是'data ['msg']'我會做'$ this-> error'並獲得錯誤。我可以做那樣的事嗎? – Alex

+1

當然,如果我們正在談論表單驗證,那麼可以使用validation_errors(),或者您可以返回一個具有錯誤味精作爲成員的對象/數組,或者可以拋出異常並處理它。 您鏈接的代碼有很多不適合mvc配置文件的內容。像來自模型的重定向等。 您應該閱讀MVC模式和/或CodeIgniter。 –