2012-08-22 26 views
0

我有一個上傳輸入,並試圖通過CI form_validation庫解析回調函數的參數。使用Codeigniter的form_validation回調解析參數文件輸入

$this->form_validation->set_rules('orderfile', 'Order Form'," trim|callback_upload_check[$account_id]"); 

這就要求:

public function upload_check($str, $id) 
{ 
    $errors = $this->do_upload($id); 

    if(isset($errors['error'])) 
    { 
     $this->form_validation->set_message('upload_check', $errors['error']); 

     return FALSE; 
    }else{ 
     return TRUE; 
    } 
} 

Codeigniter Userguide指出,調用函數時,第一個參數被解析爲函數內部的第二個參數。

這兩個參數都沒有經過分析。我發現這個帖子在Codeigniter Forum 這似乎解釋了發生了什麼(變量被剝離)。如果我更改爲<input type="text" /> params工作... 有沒有辦法解決這個問題?

+0

使需要它? – TigerTiger

+0

我有它的需要,但它對上傳輸入有點奇怪,它認爲即使它已經沒有被填充。似乎您的callback_upload_check中的$ _POST和$ _FILES – JPickup

回答

0

你需要編輯你這樣的代碼:

$this->form_validation->set_rules('orderfile', 'Order Form'," trim|callback_upload_check[".$account_id."]"); 

我還注意到,在您的form_validation-> set_rules你不傳遞任何價值的ID,這樣在你的功能,你應該做的:

public function upload_check($str, $id=0){..} 
+0

之間存在衝突,您是否還需要傳遞$ id? –

+0

它說,如果您在調用函數時傳遞一個參數,則它將作爲函數中的第二個出現 – JPickup

+0

這些建議沒有什麼區別,它不是函數由於語法而失敗/錯誤,它的參數可能是剝離或出於某種原因不通過回調函數解析(upload_check) – JPickup

0

您需要的功能更改爲:

public function upload_check($orderfile) 
{ 
    $errors = $this->do_upload($orderfile); 

    if(isset($errors['error'])) 
    { 
     $this->form_validation->set_message('upload_check', $errors['error']); 

     return FALSE; 
    }else{ 
     return TRUE; 
    } 
} 
0

我知道這是一個老問題,但我是有這個同樣的問題,我終於意識到第二個參數回到了引號中,所以如果你通過一個$id的值爲1,它實際上會回到"1"

所以,原來的問題,你需要回調函數,像這樣:

$this->form_validation->set_rules('orderfile', 'Order Form'," trim|callback_upload_check[".$account_id."]"); 

而在你的回調函數:

public function upload_check($str, $id){ 
    $actual_id=str_replace('"', "", $id) 
}