CodeIgniter ส่งตัวแปรไปยัง Modal จากนั้นไปยัง View

ฉันมีรายชื่อเมืองในฐานข้อมูลของฉัน มีปุ่มแก้ไขที่แสดงโมดอลพร้อมแบบฟอร์มที่สามารถเปลี่ยนชื่อเมืองและส่งได้ ฉันมีเวลาที่ยากลำบากในการส่ง city_id จากปุ่มแก้ไขผ่านโมดอลและไปยังคอนโทรลเลอร์ ฉันได้รับ "ข้อความที่ไม่ได้กำหนดตัวแปรสำหรับ city_id บนบรรทัดที่พยายามใส่ city_id ในรูปแบบโค้ดเปิด

การเพิ่มกิริยาช่วยในการมิกซ์ทำให้ฉันสับสน

ดูรหัส

<a href="/th#" 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);
    }
}

รหัสรุ่น

// 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 แหล่งที่มา


คำตอบ (2)


คุณสามารถใช้ city_id ที่คุณมีอยู่แล้วและตั้งค่าการดำเนินการดังนี้:

$(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

หากการสะท้อน <?php echo $c['city_id']; ?> ใช้ได้กับปุ่มแก้ไข คุณควรทำเช่นนั้นกับ form_open เช่นนี้

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

ฉันอยากจะแนะนำด้วยว่าหากฟังก์ชัน edit_city() ของคุณถูกเรียกใช้เฉพาะในกรณีที่มี segment(3) การดำเนินการนี้จะง่ายกว่า:

// 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
พยายามแล้วไม่ได้ผล โมดอลอยู่นอกลูป ดังนั้น $c['city_id'] จะไม่ตรงกับ city_id ที่เราต้องการแก้ไข - person Rich Coy; 13.11.2012
comment
คุณยังไม่ได้โพสต์โค้ดลูปใด ๆ ดังนั้นฉันจะรู้ได้อย่างไร - person Catfish; 13.11.2012
comment
ฉันรู้ว่ามันค่อนข้างจะป่อง แต่คุณสามารถใส่โมดอลเข้าไปในลูปของคุณได้ตลอดเวลา จากนั้น $c['city_id'] ก็จะได้ผล - person Catfish; 13.11.2012