2012-10-12 96 views
0

框架:CI笨傳遞數組,而不是對象

現狀:

我有這個笨非常令人沮喪的問題。

這裏是代碼: (控制器)

class sampleController extends CI_Controller { 

function index() { 
    data['message'] = 'something'; 

    data['js'] = array('script1.js', 'script2.js'); 
    data['css'] = array('style1.css', 'style2.css', 'style3.css'); 

    $this->load->model('user_model'); 
    $user = $this->input->post('username'); 

    data['user_id'] = $this->user_model->getUserIdByUsername($user); 
    data['user_info'] = $this->user_model->getAllUserInfo($user); 

    $this->load->view('someview', $data); 

} 

} 

還好還有我的控制,我通過幾個數據,如jscssuser_iduser_info

這裏是我的模型的方法:

getUserIdByUsername($user) { 
$this->db->select("id"); 
$this->db->where("username", $user); 
$result = $this->get("users"); 
return $result->row(); 

} 

getAllUserInfo($user) { 
$this->db->select("first_name, last_name, age"); 
$this->db->where("username", $user); 
$result = $this->get("users"); 
return $result->row(); 
} 

問題發生在視圖中,當我嘗試acc ESS已經由控制器

  1. ,如果我試圖呼應$message通過了所有的變量,它會正確地呈現出這樣= something
  2. ,如果我試圖在每個使用的foreach $js$css這樣

    循環

    foreach($js as $key){//echo script here}

    foreach($css as $key){// echo link rel stylesheet here}

它會呈現出正確喜歡<script src='script1.js'></script><script ...></script>迭代所有$js上也是如此css

,但如果我試圖呼應了$ USER_ID。 。它不會,因爲。它是一個對象。

所以解決這個問題我做了什麼。 。 <?php foreach($user_id as $id){} ?>我可以在這種情況下回顯$ id 是否有反正,這樣我就可以在沒有那些凌亂的foreach的情況下回顯它。

我明白,當我來到$user_info,這是很好的做到這一點foreach($user_info as $key => $value){$info[$key]=$value} 但有沒有更好的方式,在視圖中做到這一點?

也許而不是一個對象,數組將在視圖可以使用之前發送?

感謝muchs

編輯:固定方法相同的方法名稱;

回答

3

$result->row();返回一個對象與所有選定的領域。僅僅因爲你只有SELECT ed id字段不會改變返回值。試試這個:

$data['user_id'] = $this->user_model->getUserIdByUsername($user)->id; 

OR:

getUserIdByUsername($user) { 
    $this->db->select("id"); 
    $this->db->where("username", $user); 
    $result = $this->get("users"); 
    return $result->row()->id; 
} 

檢查more information about generating query results的CI文檔,如果你想數組而不是對象:

result_array()

該函數返回查詢結果爲純數組,或當沒有結果產生時爲空的數組結果uced。

row_array()

與上述相同行()函數,除了它返回一個數組。

+0

這是相當我想要的很多。但我會等待更多... –

+0

這*是*你想要的;) –

+0

等待更多什麼?這是正確的答案:) –

2

使用{$user_id[0]['id']},它應該在視圖中回顯用戶ID。 btw在你的問題兩種方法的名稱是相同的,我認爲第二個應該是getAllUserInfo($user)

1

就像你說的那樣,這是一個對象。所以你像一個訪問字段。

echo $user_id->id;