我有一種控制方法來處理一些可以在數據庫上保存或更新的信息。針對同一控制器中不同操作的驗證規則,需要採用不同的方法
我使用的是公共$驗證存儲與驗證規則的數組是這樣的:
public $validation = array(
array(
'field' => 'modelname[column1]',
'label' => 'Column 1',
'rules' => 'required'
),
array(
'field' => 'modelname[column1]',
'label' => 'Column 2',
'rules' => 'required'
),
);
我在回調函數中使用了我自己的驗證函數。像這樣:
array(
'field' => 'modelname[column3]',
'label' => 'Column 3',
'rules' => 'callback_column3|required'
),
array(
'field' => 'modelname[column4]',
'label' => 'Column4',
'rules' => 'callback_column4|required'
),
這是用控制器中的動作處理的。 問題是:
對於添加(保存)我必須檢查值的唯一性,這是callback_column4函數(假設),如果它不是唯一的,它返回false。但是,我不能爲編輯(更新)返回false,因爲我正在閱讀和編輯顯然在數據庫中的東西。
那麼,我應該怎麼做,以驗證時區分兩種不同的行動。
PS:我已經嘗試使用子陣與類/動作(http://codeigniter.com/user_guide/libraries/form_validation.html#savingtoconfig)的名字,但我使用的是Core_Model抽象播放調用
$this->form_validation->set_rules($this->validation); $this->form_validation->run()
這裏是一個後我就寫Forrst可能會幫你出這一點:http://forrst.com/posts/Validating_Uniqueness_In_CodeIgniter_When_Updati-DDA –