【问题标题】:codeigniter pass data from view to modelcodeigniter 将数据从视图传递到模型
【发布时间】:2017-04-14 14:36:34
【问题描述】:

我需要显示类别和子类别,我现在的模型是显示静态 $id,如您所见,我尝试编写 $id = 4(仅用于测试),所以它只显示 $id = 4 的子类别每个类别。

  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

【问题讨论】:

  • 您将数据传递给控制器​​,然后传递给您的模型。请同时发布您的控制器和包含输入的视图部分
  • @Kisaragi 现在编辑了
  • 您应该在这里更精确一点,您是否希望仅在选择某个类别时才填充表格?我无法在您提出的问题与您添加的视图 sn-p 之间建立关联

标签: php codeigniter parameter-passing


【解决方案1】:

有几种方法可以做到这一点,这里是一个非常有限的使用 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>

【讨论】:

    【解决方案2】:

    视图调用模型的函数。尝试如下:

    1. 在视图中加载模型

      $this-&gt;load-&gt;model('model_name');

    2. 使用所需参数调用模型函数

      $this-&gt;model_name-&gt;method_name($parameters);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多