2012-03-01 124 views
0

我想在導航(模板)中放入登錄表單,以便它將顯示在所有頁面中。 ,並將檢查數據庫中的用戶名和密碼,而不會轉到其他頁面。如果失敗,則會在導航欄中顯示錯誤,如果成功,該頁面將再次以特定費用重新加載。請告訴我如何使用代碼和細節。創建codeigniter動態模板

我在我的模板包括以下部分:

  1. 導航
  2. 頁腳
  3. 和內容將在電流控制器

我想在做這個添加每個控制器:

$this->load->view('templates/header'); 
$this->load->view('templates/nav'); 
$this->load->view('related_view'); 
$this->load->view('templates/footer'); 

但我的導航應該包含一個登錄表單,它不會通過提交進入另一個頁面。

回答

0

我找到了解決辦法是裝擴展Controller類。所以在這種情況下,我們應該創建一個擴展控制器(例如MY_Controller),並將動態操作(此處爲身份驗證)作爲方法。

然後我們應該在我們的每個控制器中擴展這個自制的控制器,因此模板中的認證將被簡單地處理。

0

我平時做這樣的事情:

<?php 
$this->load->view('templates/header'); 

if ($this->user_model->isLoggedIn()) 
{ 
    // Logged-in users should see this view 
    $this->load->view('templates/nav-registered'); 
} 
else 
{ 
    // Guests should see this 
    $this->load->view('templates/nav-guest'); 
} 

$this->load->view('related_view'); 
$this->load->view('templates/footer'); 

你會感謝自己,如果你重寫Loader類自動抓取你的頁眉/頁腳,沒有在EVERY控制方法實現代碼。只是一個想法..

+0

我的問題是在哪裏放置登錄控制器和模型。在一個單獨的類中擴展ci_controller和ci_model?如果是的話如何將它們包含在當前控制器中?你知道,例如這是我的新聞控制器,我在這個控制器中加載這些模板視圖。在我的登錄表單中我有action =「」,所以它將數據發佈到當前頁面。所以登錄控制器和模型必須可以在當前控制器(新聞控制器)中以某種方式進行登錄檢查。 thx回答! – Aliweb 2012-03-02 08:47:26

+0

爲什麼你想在每個URI處理登錄?爲什麼不讓你登錄表單*總是*指向相同的控制器操作。這樣你就不必在每個請求上不必要地檢查登錄信息...... – landons 2012-03-02 21:43:47

+0

我非常需要這個。並注意到我的問題是一般的,並且是關於動態模板(這裏是導航)。而登錄表單僅僅是一個例子。例如我想在我的導航中顯示一些隨機新聞,或者任何動態的,而不僅僅是靜態文本($ this-> load-> view()不起作用)。你知道動態行動需要控制器和模型。我的問題是如何處理主電流控制器內的這些控制器和模型 – Aliweb 2012-03-03 18:15:01

0

使用會話檢查loged用戶,並且把這種在導航視圖,但首先要確保你有會話從auload或從您的控制器

if($this->session->userdata('user_loged')){ 
     //code to put some navigation when use is loged 
}else{ 
    //code to put login form 
}