我的配置文件中有以下数组:
$config['reg_datas'] = array(
'high' => array(
7 => 200,
30 => 500
),
'box' => array(
7 => 125,
30 => 350
),
'shots' => array(
7 => 25,
30 => 50
)
);
因此,参考CI的手册,我使用此验证规则验证我的表单数据:callback__validate_high
...我必须使用此回调函数:
public function _validate_high($input)
{
$cfg = $this->config->item('reg_datas');
if ( !array_key_exists($cfg['high'], $input)
{
$this->form_validation->set_message('_validate_high', 'Invalid High Field...');
return FALSE;
}
return TRUE;
}
问题是;如果array_key_exists
,我每次需要检查时是否真的需要创建新的回调?上面的代码只是一个验证规则(对于一个数组),但我的配置文件中有3个数组(可能很快就会有更多) - 所以我真的必须为这样简单的检查创建3个回调函数?
CodeIgniter是我正在学习的第一个框架,并且希望尽可能地学习它,我真的很关心这个问题,因为我根本不想浪费我的时间。
答案 0 :(得分:1)
首先,array_key_exists()
的语法错误,键是第一个属性,第二个是数组。
像这样:array_key_exists($input, $cfg['high']);
。
要进行验证,请执行常用功能,而不是逐个检查密钥。还要在配置文件中输入错误代码。
$config['reg_datas_error'] = array(
'high' => 'Invalid High Field',
'box' => 'Invalid box Field',
'shots' => 'Invalid Shots Field'
);
您常用的验证功能
public function _validate_field($input, $key)
{
$cfg = $this->config->item('reg_datas');
$cfg_error = $this->config->item('reg_datas_error');
if ( !array_key_exists($input, $cfg[$key])
{
$this->form_validation->set_message('_validate_'.$key, $cfg_error[$key]);
return FALSE;
}
return TRUE;
}
请注意,这些只是示例,您可以改进或以其他方式进行操作。只是主要逻辑如何做一般验证