2016-05-12 116 views
1

在我的codeigniter應用程序中,我有一個用戶列表,其中管理員可以更改用戶角色並更新用戶信息。編輯用戶時,url爲user/edit_user/1002,並且加載了edit_user視圖。 1002是用戶的用戶名。在Codeigniter中丟失的URI段

當我提交表單和form_validation失敗時,我重新加載視圖,但問題是網址上的最後一段,用戶標識丟失。所以表單中使用的sql查詢失敗。有沒有一種方法可以重新加載錯誤的視圖,並保持uri段中的用戶ID?以下是代碼:

if ($this->form_validation->run() == FALSE) { 

     $userid = $this->uri->segment(3); 
     $this->db->where('userid', $userid); 
     $query = $this->db->get('user'); 
     $row1 = $query->row();  
     $data = (array)$row1;             

     $sql = "SELECT userid, role_id FROM user_role WHERE userid = $userid ";// This sql fails 
     $ro = $this->db->query($sql); 

     $data['role_check'] = $ro->result(); 
     $this->load->view('edit_user',$data); 
} 

在此先感謝。

在view_user.php,

<tr> 
     <td><?php echo $loop->userid;?></td> 
     <td><?php echo $loop->name;?></td>      
     <td><a class="btn-small btn-info" href="<?php echo site_url(); ?>/user/edit_user/<?php echo $loop->userid;?>">Edit</td> 

    </tr> 

的在控制器的用戶中,我使用我張貼第一代碼。

+0

將其設置爲SESSION VARIABLE,並在更新 – JYoThI

+0

後銷燬它,或者在更新操作url中再次傳遞相同的ID too user/edit_user/<?php echo $ this-> uri-> segment(3); – JYoThI

+0

驗證將被錯誤兩次,即首先加載頁面,然後再次驗證錯誤。所以,銷燬SESSION VARIABLE不起作用。 uri片段來自view_user頁面,點擊EDIT,進入edit_user頁面。如果我把<?php echo $ this-> uri-> segment(3); ?>,那麼會出現錯誤「消息:類CI_URI的對象無法轉換爲字符串」。這個問題變得非常刺激。 – John

回答

0

我已經解決了自己的問題,並在萬一有人分享它在其他面臨這個問題。通過CI文檔,我發現如果段不存在,函數返回FALSE。我用它來涵蓋更新可能面臨的所有條件。下面的代碼中給出:

if($this->uri->segment(3)) 
     { $userid = $this->uri->segment(3); 
      $this->session->set_userdata('update_user_id',$userid); 
     }    
     else    
      $userid= $this->session->userdata('update_user_id');  

在窗體的再驗證的情況下,$這個 - > URI->段(3)將返回FALSE和其他條件將挑選從會話的用戶ID,其被設置在表單首先通過點擊編輯鏈接填充。

謝謝大家。

1

在表單的操作中添加用戶標識。

事情是這樣的:

action="user/edit_user/<?php echo $this->uri->segment(3); ?>" 
+0

在窗體動作中傳遞id會拋出錯誤「消息:類CI_URI的對象無法轉換爲字符串」。 – John