2012-12-13 28 views
-2

我想在codeigniter中創建我的用戶模塊,但無法弄清楚如何將結果從我的模型中的查詢傳遞到允許我在視圖中使用的控制器。如何將變量從模型傳遞到控制器以用於代碼點火器中的視圖?

這裏是我的模型:

public function user() 
     { 
      $session = $this->session->userdata('is_logged_in'); 
      $user_id = $this->session->userdata('id'); 
      $query = $this->db->query("SELECT * FROM users WHERE id=$user_id LIMIT 1"); 
      foreach ($query->result() as $row) 
      { 
       $row->first_name; 
       $row->id; 
       $row->email; 
       $row->last_name; 
      } 

     } 

,這裏是我的控制器。我如何傳遞這些對象?或者我應該把它們放在一個數組中,然後傳遞數組(然後不知道如何傳遞它),然後從控制器的數組中提取它們?

public function edit() 
    { 
     $data['first_name'] = $this->session->userdata('first_name'); 
     $data['profile_icon'] = 'edit'; 
     $data['profile_breadcrumbs'] = 'Edit Profile'; 
     $data['main_content'] = 'account/edit'; 
     $this->load->view('includes/templates/main_page_template', $data); 
     $this->load->library('session'); 
     $this->load->model('account_model'); 
     $session = $this->session->userdata('session_id'); 
     $this->account_model->user(); 
     if($session) 
     { 
      //TRYING TO GET OBJECTS 
     } 
    } 

我發現了類似的問題,但很難找到我正在尋找的東西。

在此先感謝

+0

爲什麼你會得到如此多的讚譽嗎?你是壞蘋果還是summin? – stormdrain

+1

我真的不知道,我希望不會。這似乎是一個有效的問題,似乎很清楚幷包含代碼。我仍然認爲應該對投票進行解釋。 – LightningWrist

回答

2

控制器:

$data['user']=$this->account_model->user(); 
//populates $data['user'] with the user details based on the session. 
$this->load->view('includes/templates/main_page_template', $data); 

的型號:

public function user() 
    { 
     $session = $this->session->userdata('is_logged_in'); 
     $user_id = $this->session->userdata('id'); 
     $query = $this->db->query("SELECT * FROM users WHERE id=$user_id LIMIT 1"); 
     if($query->num_rows()==1) 
     { 
      $data = $query->result_array(); 
      return $data[0]; 
     //above returns the single row you need to the controller as an array. 
     //to the $data['user'] variable. 
     } else { 
      do something here to handle no return 
     } 
    } 

然後在視圖中的數據是通過$用戶變量訪問,所以你可以這樣做:

echo 'Hi '.$user['first_name']; 
2

你必須把它分配給一個變量,並與工作:

$user = $this->account_model->user(); 

foreach($user->result() as $row){ 
    echo $row->name; 
} 

如果你想將數據傳遞給視圖,你必須確保你加載最後畢竟$data的觀點已設置:由模型產生

$user = $this->account_model->user(); 
$data['user'] = $user; 
$this->load->view('includes/templates/main_page_template', $data); 

那麼你的用戶數據將在視圖中可通過$user變量。


編輯:

也注意到你是不是return從模型荷蘭國際集團任何東西:/

型號:

public function user() 
    { 
     $session = $this->session->userdata('is_logged_in'); 
     $user_id = $this->session->userdata('id'); 
     $query = $this->db->query("SELECT * FROM users WHERE id=$user_id LIMIT 1"); 
     return $query; 

    } 

控制器:

$user = $this->account_model->user(); 
$data['user'] = $user; 
$this->load->view('includes/templates/main_page_template', $data); 

V iew:

foreach($user->result() as $row){ 
    $first_name = $row->first_name; 
    $id = $row->id; 
    $email = $row->email; 
    $last_name = $row->last_name; 
} 

echo "User id: $id has $first_name as a first name, $last_name as their last name, and $email as their email address"; 

因此,您的模型查詢數據庫,返回結果。控制器在模型中調用它想要的數據(在這種情況下爲user())並將其發送到視圖。該視圖循環查詢並顯示數據。

+0

好的,這就是我正在尋找的。我唯一的問題是你發佈的第一個代碼塊是在模型中,並取代我現有的foreach語句? – LightningWrist

+0

並確保你的'user()'函數實際返回用戶! '$ user = $ this-> account_model-> user();'如果你的'user()'函數沒有返回任何東西,'不會幫助你。 –

+0

@LightningWrist我更新了答案;沒有意識到你實際上並沒有從模型中返回數據。我的例子只是一個例子,有許多方法可以做到這一點。 – stormdrain

相關問題