CodeIgniter meneruskan variabel ke Modal lalu ke View

Saya memiliki daftar kota di database saya. Terdapat tombol edit yang menampilkan modal dengan formulir dimana mereka dapat mengubah nama kota dan mengirimkan. Saya mengalami kesulitan untuk meneruskan city_id dari tombol edit melalui modal dan ke pengontrol. Saya mendapatkan "pesan variabel tidak terdefinisi untuk city_id pada baris yang mencoba memasukkan city_id dalam bentuk kode terbuka.

Menambahkan modal ke dalam campuran telah membuat ini membingungkan saya.

Lihat Kode

<a href="/id#" class="btn edit-modal" data-id="<?php echo $c['city_id']; ?>"  data-name="<?php echo  $c['city_name']; ?>">Edit</a>

<!-- Modal for Edit -->
<div class="modal hide" id="editCityDialog">
<div class="modal-header">
    <button class="close" data-dismiss="modal">x</button>
    <h3>Edit City</h3>
</div>
<div class="modal-body">
    <?php $this->load->helper('form'); ?>
        <?php echo form_open('/cities/edit_city/'. $city_id); ?>
        <label class="control-label" for="name">City</label>
        <input type="text" name="city_name" id="city_name" value=""/><br />
        <input type="submit" class="btn-small btn-primary" value="Edit City" />
        <button class="btn-small" data-dismiss="modal">Cancel</button>
    <?php echo form_close(); ?>
</div>

<!-- jQuery for Modal -->
<script>
  // scripts for modal windows
$(document).on("click", ".edit-modal", function () {
    var city_name = $(this).data('name');
    var city_id = $(this).data('id');
    $(".modal-body #city_name").val( city_name );
    $('#editCityDialog').modal('show');
});
</script>

Controller Code

// Edit City
public function edit_city() {
    $id = $this->uri->segment(3);

    if ($this->input->city('submit')) {
        $city_name = $this->input->xss_clean($this->input->city('city_name'));
        $this->cities_model->edit_city($city_id, $city_name);
    }
}

Kode model

// Edit City
public function edit_city($city_id, $city_name) {
    $data = array(
        'city_name' => $city_name
    );
    $this->db->where('city_id', $city_id);
    $this->db->update('cities', $data);
}

person Rich Coy    schedule 13.11.2012    source sumber


Jawaban (2)


Anda dapat menggunakan city_id yang sudah Anda miliki dan mengatur tindakan dengan itu:

$(document).on("click", ".edit-modal", function () {
    var city_name = $(this).data('name');
    var city_id = $(this).data('id');
    $(".modal-body #city_name").val( city_name );
    //set the forms action to include the city_id
    $(".modal-body form").attr('action','/cities/edit_city/'+city_id);
    $('#editCityDialog').modal('show');
});
person stormdrain    schedule 13.11.2012

jika echo <?php echo $c['city_id']; ?> berfungsi untuk tombol edit, Anda harus melakukannya untuk form_open juga seperti ini

<?php echo form_open('/cities/edit_city/'. $c['city_id']); ?>

Saya juga merekomendasikan jika fungsi edit_city() Anda hanya dipanggil jika ada segment(3), maka lebih mudah untuk melakukan ini:

// Edit City
public function edit_city($id) {

    if ($this->input->city('submit')) {
        $city_name = $this->input->xss_clean($this->input->city('city_name'));
        $this->cities_model->edit_city($city_id, $city_name);
    }
}
person Catfish    schedule 13.11.2012
comment
Mencoba itu, tidak berhasil. Modalnya berada di luar loop sehingga $c['city_id'] tidak akan cocok dengan city_id yang ingin kita edit. - person Rich Coy; 13.11.2012
comment
Anda belum memposting kode loop apa pun, jadi bagaimana saya bisa mengetahuinya. - person Catfish; 13.11.2012
comment
Saya tahu ini agak membengkak, tetapi Anda selalu bisa memasukkan modal ke dalam loop Anda dan kemudian $c['city_id'] akan berfungsi. - person Catfish; 13.11.2012