2014-01-29 54 views
1

驗證失敗後,我的表單重新填充問題。問題是我的網址包含一個額外的URI,我可以通過點擊鏈接進入。這是什麼樣子:如何在表單驗證之後重新填充表單並保留URI?

http://www.example.com/admin/trivia/add/5 

起初麻煩的是,URI的段4完全消失,所以即使驗證錯誤顯示和形式重新填充,我失去了我添加的URI。

然後我在另外一個問題發現,解決辦法是設置形式開這樣的:

echo form_open(current_url()); 

問題是現在沒有顯示任何的驗證錯誤和形態沒有重新填充。有沒有辦法做到這一點?

這是我的控制器是什麼樣子:

function add() 
{  
    $data = array('id' => $this->uri->segment(4)); 

    if($_POST) 
    { 
     $this->_processForm(); 
    } 

    $this->load->view('admin/trivia_form', $data); 
} 

而且裏面_processForm()我得到了所有的驗證規則,錯誤消息,並且在成功的情況下重定向。

[編輯]這裏是我的_processForm():

function _processForm() 
{  
    $this->load->library('form_validation'); 

    //validation rules go here 
    //validation error messages 

    $this->form_validation->set_rules($rules); 
    $this->form_validation->set_error_delimiters('<div style="color:red">', '</div>'); 

    if ($this->form_validation->run()) 
    { 
     //get input from form and assign it to array    
     //save data in DB with model 
     if($this->madmin->save_trivia($fields)) 
     { 
      //if save is correct, then redirect 
     } 
     else 
     { 
      //if not show errors, no redirecting. 
     } 

    }//end if validation 
} 

回答

1

要保持相同的url,您可以在同一個控制器函數中執行所有操作。

在你的控制器

function add($id) 
{ 
    if($this->input->server('REQUEST_METHOD') === 'POST')// form submitted 
    { 
     // do form action code 
     // redirect if success 


    } 

    // do your actual stuff to load. you may get validation error in view file as usual if validation failed 

} 
+0

你的意思是我的form_validation-> run()應該在if裏面嗎?因爲我已經有了這樣的東西,我會更新我的問題,向您展示我的控制器。 – Ant100

+0

@ Ant100是的。在if條件內。如果驗證失敗,則不應該重定向。別管它吧。所以當前的代碼將加載視圖的值。 –

+0

它不工作:( – Ant100

0

重新填充你將需要在提交時,它重置字段值所示例here表單字段和meke它打開同一個頁面您可以使用redirect()函數作爲波紋管:

redirect('trivia/add/5','refresh'); 
+0

嘿,感謝回答。我已經使用set_value(),當我嘗試重定向它沒有工作時,我仍然失去了所有的驗證錯誤,並且表單沒有重新填充。 – Ant100

0

我不知道你正在嘗試做的,但這種嘗試的價值觀用戶重新填充表單中輸入

<?php 
     echo form_input('myfield',set_value('myfield'),'placeholder="xyz"'); 
?> 
相關問題