您的驗證規則的第二個參數應該是該領域的人類可讀的名稱,而不是實際的數據。考慮下面的代碼。
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
的第一條規則將檢查POST可變$_POST['title']
,以確保它被設置和爲5個到255個字符之間。如果這些規則失敗,則在錯誤消息中使用名稱Title
。第二條規則將檢查變量$_POST['html']
以確保它已設置,如果未設置,將在錯誤消息中使用名稱HTML
。
查看CodeIgniter Documentation瞭解更多具體實施細節。
根據您的代碼,您似乎希望通過表單驗證運行一些不屬於$_POST
陣列的變量。要做到這一點,你有兩個選擇。首先,您可以將要驗證的所有數據放入數組中,並使用$this->form_validation->set_data($array)
來使用該數組而不是$_POST
。或者,您可以將要驗證的字段添加到$_POST
。
set_data()
例如:
$formData = array('title' => $this->input->post('title'), 'html' => $data['html']);
$this->form_validation->set_data($formData);
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
$_POST
例如:
$_POST['html'] = $data['html'];
$this->form_validation->set_rules('title', 'Title', 'required|min_length[5]|max_length[255]');
$this->form_validation->set_rules('html', 'HTML', 'required');
if ($this->form_validation->run() == FALSE){
echo 'Fail';
}else{
echo 'Success';
}
個人我推薦$_POST
方法。
你能顯示生成的標記代碼嗎? – vitozev
什麼是'$ data'並且你可以在這裏發表你的表格 –
$ data是所有具有name =「data [field_name]」的字段 –