2017-04-14 97 views
0

我需要顯示類別和子類別,我的模型現在是顯示靜態$ ID,因爲你可以看到我試圖寫$ ID = 4(僅用於測試),所以它只是顯示子類別,其中$ id = 4在每個類別中。codeigniter從視圖傳遞數據到模型

public function get_subkriterias($id = 4) 
    { 
    $this->db->select('kriterias.nama as kriterias_nama, kriterias.id, sub_kriterias.id, sub_kriterias.nama, sub_kriterias.nilai'); 
    $this->db->from('kriterias'); 
    $this->db->join('sub_kriterias', 'kriterias.id = sub_kriterias.kriteria_id', 'LEFT'); 
    $this->db->where('kriteria_id', $id); 
    $this->db->order_by('kriterias.id'); 
    $query = $this->db->get(); 
    return $query->result_array(); 
} 

這是我 控制器

public function index() 
    { 
    $data['kriterias'] = $this->subkriterias_model->tampil(); 
    $data['sub_kriterias'] = $this->subkriterias_model->get_subkriterias(); 
    $this->load->view('sub_kriterias/tampil', $data); 
    } 

觀點:

  <?php foreach ($kriterias as $item) { ?> 
     <tr> 
      <td><?php echo $item['nama']; ?></td> 
      <td> 
       <table class="table"> 
        <tbody> 
        <?php foreach ($sub_kriterias as $item) { ?> 
        <tr> 
         <td><?php echo $item['nama']?></td> 
         <td><?php echo $item['nilai'] ?></td> 

我如何從視圖中傳遞數據或任何地方,$ id,這樣這種模式可以動態終於取回的$ id每個類別中只顯示正確的子類別?

預先感謝您

image

+0

你將數據傳遞給控制器​​,然後傳遞給你的模型。請發佈你的控制器和包含輸入的視圖部分 – Kisaragi

+0

@Kisaragi現在編輯它 – ergxpr0xy

+0

你應該在這裏更精確一點,你是否希望一個表只在選擇某個類別時填充?我無法在你問的問題和你添加的視圖片段之間繪製關係 – Kisaragi

回答

0

有幾種方法你可以做到這一點,這是一個非常有限例如使用AJAX

在你的控制器:

public function index() 
{ 
    /**getting intial items only**/ 
    $data['kriterias'] = $this->subkriterias_model->tampil(); 
    $this->load->view('sub_kriterias/tampil', $data); 

} 

public function get_category() 
{ 
    /** id posted via ajax once user clicks category**/ 
    $id = $this->input->post('id'); 
    $sub_kriterias = $this->subkriterias_model->get_subkriterias($id); 
    echo json_encode($sub_kriterias); 
    exit(); 
}   

在視圖中我們就會有一個項目列表:

<select id= "categorey_select"> 
    <? foreach($kriterias as $item):?> 
     <option name="selected_cat" value="<?=$item['id'];?>"><?=$item['nama'];?></option> 
    <?endforeach;?> 
</select> 

<!-- notice this table is empty for now--> 
<table id="category_results"> 
</table> 

在這裏,我們將使用一個jQuery事件偵聽器發送ajax請求一旦一個類別被點擊(您可以添加此視圖或加載一個包含它的js腳本):

<script> 
    $("#categoery").change(function(){ 
     var id = $(this).val(); 

     $.ajax({ 
      url: '/path/to_controller/get_category', 
      method: "POST", 
      data: {id: id}, 

      success: function(resp){ 
       /** use console/web tools to see the returned object's structure**/ 
       /** here you would populate the empty table with the results **/     
      /** using empty to reset the table each time category changes**/ 
       $("category_results").empty().append("<tr>...") 
      } 
     }) 
    }) 
</script> 
0

視圖致電模型功能。嘗試象下面這樣:使用

$this->load->model('model_name');

  • 呼叫到模型的功能視圖

    1. 加載模型所需的參數

      $this->model_name->method_name($parameters);

  • 相關問題