2012-11-13 90 views
0

我有我的數據庫中的城市列表。有一個編輯按鈕,可以顯示一個模式,其中可以更改城市名稱並提交。我很難讓city_id從編輯按鈕通過模態傳遞到控制器。我得到有關它試圖把city_id形式開放代碼行city_id一個「消息未定義的變量。CodeIgniter將變量傳遞給模態然後傳遞給視圖

添加一個模式到混合作出這種混亂給我。

查看代碼

<a href="#" 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> 

控制器代碼

// 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); 
} 

回答

1

可以使用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'); 
}); 
+0

輝煌。謝謝。 –

0

如果呼應<?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); 
    } 
} 
+0

試過了,沒有工作。該模式位於循環之外,因此$ c ['city_id']與我們想要編輯的city_id不匹配。 –

+0

你還沒有發佈任何循環代碼,所以我應該如何知道這一點。 – Catfish

+0

我知道它有點臃腫,但是你總是可以把模態的東西放到你的循環中,然後'$ c ['city_id']'就可以工作。 – Catfish