我有一個用戶提交CSV的文本輸入,例如red, blue, red, yellow
Codeigniter使用驗證回調來更改提交的值
如果用戶提交重複值,例如red
,如上所示,我想刪除重複項。我開始做回調,但我不知道如何完成它。
//callback rule
function _remove_dublicate($str)
{
$val = strtolower($str); //make everything lowercase
$colors = str_getcsv($val); //create array
$result = array_unique($colors); //remove duplicates
}
如果有重複的,我應該怎麼做,從$result
提交新的字符串到數據庫?
下面是我的表單驗證
$this->form_validation->set_rules('colors', 'Colors', 'trim|required|xss_clean|regex_match[/^[a-z, ]+$/i]|callback__remove_dublicate');
if ($this->form_validation->run() == FALSE) //if validation rules fail
{
$this->load->view('edit/form');
}
else //success
{
$data = array (
'colors' => $this->input->post('colors')
);
$this->My_model->colors_update($data);
}
編輯
基於歌廳的建議我加入這個在else
語句刪除dublicates
$colors = str_getcsv($this->input->post('colors')); //create array
$result = array_unique($colors); //remove duplicates
$comma_separated = implode(",", $result); //add back CSV string
$data = array (
'colors' => $comma_separated
);
看來工作
謝謝你。當我寫下「具有更多CI專業知識的人」時,我一直在想你。 ;)這是用戶指南中記錄的?我只是看了看,發現一條線,但沒有例子。當您返回時,結果在哪裏?混亂! – cabaret 2011-06-05 01:50:36
請參閱[準備數據](http://codeigniter.com/user_guide/libraries/form_validation.html#preppingdata)上的示例。其中之一就是'md5',例如md5就是字符串。看看他們建議不要運行改變輸入的函數,直到返回true/false的驗證規則之後,以便在重新填充表單時顯示原始數據。通常使用類似'url_title()'的東西也是一個很好的例子。基本上,任何返回字符串的函數都會改變輸入的值。 – 2011-06-05 01:53:02
嗯。仍然很困惑;我明天會檢查這個,因爲現在是凌晨4點,我現在可能已經太累了。感謝教我新的東西;) – cabaret 2011-06-05 01:56:21