2017-04-06 69 views
1

我試圖在視圖上打印控制器方法的結果,但它給了我一個錯誤: 未定義的變量:$ states。有人可以幫我指出我的代碼有什麼問題嗎?控制器方法的結果CodeIgniter中的視圖不可訪問

型號代碼:

public function state_names() { 
    $query = $this->db->select('name') 
        ->get('place') 
        ->where('parent','India'); 
    $query->db->get(); 
    return $query->result(); 
} 

控制器代碼:

public function state_names() { 
    $st['states'] = $this->place_model->state_names(); 
    if ($this->form_validation->run('resource_signup') == TRUE) { 
     if (isset($st['states']) && $st['states']->num_rows() > 0) { 
      $this->load->view('/web/resource_signup',$st); 
     } 
    } 
    return array(); 
} 

查看代碼:

<?php foreach ($states as $state) { 
    echo $state->name; 
} 
+1

在你的控制器,調用模型函數state_names,打印這個就看你是從數據庫或沒有得到數據之後。 –

+0

我不知道,你爲什麼要驗證。有沒有特別的理由來做到這一點? – kishor10d

回答

1

在你的模型,你是運行查詢兩次 - 對於每個方法get()。你應該運行一次:

public function state_names() { 
    $query = $this->db->select('name') 
        ->where('parent','India') 
        ->get('place'); 
    return $query->result(); 
} 

在你的控制器,你不能籤NUM_ROWS()因爲有結果 - 不是從數據庫中充分反應。

public function state_names() { 
    $st['states'] = $this->place_model->state_names(); 
    if ($this->form_validation->run('resource_signup') == TRUE) { 
     if (isset($st['states'])) { 
      $this->load->view('/web/resource_signup',$st); 
     } 
    } 
    return array(); 
} 
+0

我試過這個解決方案,但仍然面臨相同的問題:未定義的變量:狀態 – Nutan

1

在模型首先嚐試這一個

public function state_names() { 
     $this->db->select('name') 
     $this->db->get('place') 
     $this->db->where('parent','India'); 
     $query=$this->db->get(); 
    return $query->result_array(); 
} 
+0

'''echo $ state-> name;'''這個語句不需要任何數組。它是一個標準類對象。 – kishor10d

0

你的問題是2的地方,第二次在控制器

if (isset($st['states']) && $st['states']->num_rows() > 0)

and Model

  1. 模型求解

    public function state_names() { $query = $this->db->select('name') ->where('parent','India') ->get('place'); // $query->db->get(); if($query->num_rows() > 0){ return $query->result(); } }

N.B [在哪裏將是第一個得到的將是它的最佳實踐];

控制器解決方案:

public function state_names() { 
    $st['states'] = $this->place_model->state_names(); 

    if ($this->form_validation->run('resource_signup') == TRUE) { 
     if (isset($st['states'])) { 
      $this->load->view('/web/resource_signup',$st); 
     } 
    } 
    return array(); 
}` 
+0

謝謝!我試過這個解決方案,但仍然面臨相同的錯誤:未定義的變量:狀態 – Nutan

+0

問題是您的表單驗證。如果(isset($ st ['states'])){this-> load-> view('/ web/resource_signup',$ st);如果測試目的只是使用這個 ' ' }' –

+0

必須它會工作和測試 –

相關問題