2017-04-01 52 views
-1

我有這個控制器代碼:通row_array()來笨視圖

10 $rowArr=$this->m_model->getItemData($itemID); 
11 $rowArr=['code'=>'123','desc'=>'456','price'=>'789']; 
12 $this->load->view('item_v',$rowArr); 

在我的模型,我有:

$result=$this->db 
    ->select('code','desc','price') 
    ->where('itemID',$itemID) 
    ->get('catalog') 
    ->row_array(); 
return $result; 

當我運行它,我得到預期的123,456,789顯示在'code','desc'和'price'列中,因爲$ rowArr的第二個定義被髮送。但是,當我在第11行註釋時,允許第一個(預期的)定義接管 - 我在視圖中爲所有三個定義了未定義的變量錯誤。

我認爲我使用:

<div> 
    <?php 
     echo "<div>"; 
     echo "code: ".$code."<br>"; 
     echo "desc: ".$desc."<br>"; 
     echo "price: ".$price."<br>"; 
     echo "</div>"; 
    ?> 
</div> 

由於它的工作原理確定使用字面數組我知道這個問題必須在模型 - 毫無疑問,我試圖創建從數據庫中查詢數組目的。 CI文檔似乎很清楚,使用row_array()方法應該將db對象轉換爲一個php數組。我試過了所有可以找到或想到的變體,但沒有任何效果。任何人都可以告訴我我犯了什麼錯誤嗎?提前致謝。

+0

你明白了什麼,當你把這個代碼'的var_dump($ rowArr);'下面一行11? – shaggy

+0

當放在第10行以下時,我得到一個很大的NULL。或者當11被註釋掉時在第11行下面。 – Banjobum

+0

當第11行運行時,我得到預期列出的變量,123,456,789。 – Banjobum

回答

-1

正如你可以從評論中看到的,感謝@DFriend和@shaggy,我發現了這個問題,但不是我確信的地方。要打開描述爲視圖頁面,上面,用戶點擊tsEditButt在此代碼:

$('.tsEditButt').click(function() { 
    var itemID=$(this).closest('.item').attr('id'); 
    var base_url=$('#hiddenDiv').text(); //'http://localhost/CID17/'; 
    var url=base_url+'controller_a/index/'+itemID,_blank; 
    window.open(url); 

我不知怎麼刪除線的一部分:

var url=base_url+'controller_a/index/'+itemID,_blank; 

於是有人打開新頁面但是itemID缺失並且從未傳遞給模型。正如@DFriend所說:「如果模型返回null,那麼沒有記錄where itemID = $ itemID」。經過2天的睜大眼睛,我想我會記住這一個。

-2

控制器代碼:

$rowArr = $this->m_model->getItemData($itemID); 
$data['code'] = $rowArr->code; 
$data['desc'] = $rowArr->desc; 
$data['price'] = $rowArr->price; 

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

型號代碼:

public function getItemData($itemID) { 
    $this->db->select('code','desc','price'); 
    $this->db->from('catalog'); 
    $this->db->where('itemID', $itemID); 
    $result_array=$this->db->get(); 
    $result=$result_array->row(); 
    return $result; 
} 
+0

我看到您將數據視爲具有模型中屬性的行對象 - 您「返回」到控制器。然後在控制器中將每個屬性轉換爲數組'$ data'的元素 - 將其發送到視圖。我選擇將數據視爲數組元素,從數據庫到模型轉移到控制器以查看 - 希望能夠節省一些複雜性。你的方法在很多例子中都可以看到。請幫我理解原因。謝謝。 PS我發現你的回覆非常有用。 – Banjobum