我有一种控制方法来处理一些可以在数据库上保存或更新的信息。针对同一控制器中不同操作的验证规则,需要采用不同的方法
我使用的是公共$验证存储与验证规则的数组是这样的:
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 –