duanlu2935
2016-12-31 00:14
浏览 59
已采纳

在codeigniter的控制器中更改了获取html链接的问题

I was using ajax calls. when I click on the edit link it would pop up a modal with all the information. I now want to change it, so that it goes to an edit page instead. The part I need changed is the onclick on the edit link bellow in the code from edit_record to instead call a function in my controller called edit. Any help would be appreciated I spent quit a long time trying different ways and keep getting errors.

Here is the controller function code called ajax_list

public function ajax_list()
{
    $list = $this->your_table->get_datatables();
    $data = array();
    $no = $_POST['start'];
    foreach ($list as $your_table) {
        $no++;
        $row = array();
        $row[] = $your_table->name;
        $row[] = $your_table->title;
        $row[] = $your_table->body;


        //add html for action
        $row[] = '<a class="btn btn-sm btn-link " href="javascript:void()" title="Edit" onclick="edit_record('."'".$your_table->id."'".')"><i class="glyphicon glyphicon-pencil"></i> Edit</a>
                  <a class="btn btn-sm text-warning" href="javascript:void()" title="Hapus" onclick="delete_record('."'".$your_table->id."'".')"><i class="glyphicon glyphicon-trash"></i> Delete</a>';

        $data[] = $row;
    }

    $output = array(
                    "draw" => $_POST['draw'],
                    "recordsTotal" => $this->your_table->count_all(),
                    "recordsFiltered" => $this->your_table->count_filtered(),
                    "data" => $data,
            );
    //output to json format
    echo json_encode($output);
}

Here is the code in my your_controller called edit

//loads a single record with the data dispalyed for editing
    function edit($id)
    {
        $data['r']=$this->your_table->get_by_id($id);
        $this->load->view('pages/edit', $data);
    }


        //updates data in the database from the edit function
    function save_edit()
    {
        $id=$this->input->post('txtid');
        $data=array(
            'name'=>$this->input->post('txtname'),
            'title'=>$this->input->post('txttitle'),
            'body'=>$this->input->post('txtbody'));


        $this->db->where('id', $id);
        $this->db->update('your_table', $data);
        redirect('your_controller/index');
    }
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • doude4924 2016-12-31 14:10
    已采纳

    If your controller is called "edit" and your method has the same name, just change to:

    //add html for action
        $row[] = '<a class="btn btn-sm btn-link " href="/edit/edit/'.$your->table->id.'" title="Edit"><i class="glyphicon glyphicon-pencil"></i> Edit</a>
                  <a class="btn btn-sm text-warning" href="javascript:void()" title="Hapus" onclick="delete_record('."'".$your_table->id."'".')"><i class="glyphicon glyphicon-trash"></i> Delete</a>';
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题