2013-02-27 36 views
0

我想要顯示上傳文件時產生的任何錯誤,方法是將用戶重定向回到他們用來上傳文件的頁面。問題是我預先在頁面上填充了一些輸入,所以我不能使用redirect(controller/method_to_load_page),因爲那樣做不會執行數據填充。如何輸出上傳錯誤爲flashdata - CodeIgniter

使用$this->load->view('add_page',$error);將無法​​(我使用它的方式),因爲雖然這將顯示錯誤,它不會顯示輸入字段與預填充數據。

這是我的控制器,它加載的形式上傳文件等領域的方法:

public function add_products_page() 
    { 
     //get each categories subcategory and place them in their own variable 
     $data['categories1'] = $this->admin_model->getSubcategories('1'); 
     $data['error'] = ''; 
     $this->load->view('add_page',$data); 
    } 

,並從該頁面中,用戶可以填寫表格,然後選擇一個圖像。形式然後將在相同的控制器提交本方法:

public function add_book() 
    { 
     $id = $this->admin_model->add_book(); 

     $config['file_name'] = $id; 
     $config['upload_path'] = './images/'; 
     $config['allowed_types'] = 'jpg'; 

     $this->load->library('upload', $config); 

     if (! $this->upload->do_upload()) 
     { 
      $error = array('error' => $this->upload->display_errors()); 

      $this->load->view('add_page', $error); 
     } 
     else 
     { 
      redirect('admin/add_products_page', 'refresh'); 
     } 
    } 

如果沒有錯誤,則重新導向到add_products_page()方法是好的,然而,當有錯誤時,視圖「add_page」被載入並顯示錯誤,但我的預填充字段不再被填充,因爲執行該操作的方法未被調用。

所以我真的很想知道如何通過調用add_products_page方法來填充我的視圖來填充我的輸入字段,並在出現錯誤時顯示錯誤。如果有人能幫助,我會很感激。

+1

答案我使用的是在這裏:http://stackoverflow.com/questions/7934712/how-to-passing-validation-error-data-through-redirect – a7omiton 2013-02-27 20:41:08

回答

0

爲什麼發佈到不同的方法,然後重定向?你可以用同樣的方法處理它。

public function add_products_page() 
{ 
    if ($this->input->server('REQUEST_METHOD') == 'POST') 
    { 
     $result = $this->_add_book(); 
     if ($result['is_error']) 
     { 
      // TODO: whatever it takes to show an error message 
      $data['error'] = $result['message']; 
     } 
     else 
     { 
      // TODO: whatever it takes to show a success message 
      $data['error'] = ''; 
     } 
    } 

    //get each categories subcategory and place them in their own variable 
    $data['categories1'] = $this->admin_model->getSubcategories('1'); 
    $this->load->view('add_page',$data); 
} 

public function _add_book() // add underscore so it's not directly accessible 
{ 
    $result = array(
     'is_error' => TRUE, 
     'message' => '', 
    ); 

    $id = $this->admin_model->add_book(); 

    $config['file_name'] = $id; 
    $config['upload_path'] = './images/'; 
    $config['allowed_types'] = 'jpg'; 

    $this->load->library('upload', $config); 

    if (! $this->upload->do_upload()) 
    { 
     $error = array('error' => $this->upload->display_errors()); 

     // set an error message 
     $result['message'] = $error; 
    } 
    else 
    { 
     // set a success message 
     $result['is_error'] = FALSE; 
     $result['message'] = 'SOME SUCCESS MSG'; 
    } 

    return $result; 
} 
+0

的方法「add_products_page」是有點像空白表格,它不僅僅是處理書籍的添加,而是處理其他類型的產品,所以這就是爲什麼它分開了。我剛剛找到了一個可行的答案:http://stackoverflow.com/questions/7934712/how-to-passing-validation-error-data-through-redirect。不過謝謝你的回覆,我會考慮改進我的代碼 – a7omiton 2013-02-27 20:40:20