0

我的配置文件中有以下数组:

$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 是我正在学习的第一个框架,我希望尽可能地学习它,我真的很关心这样的事情,因为我不想浪费我的时间。

4

1 回答 1

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;
}

请注意,这些只是示例,您可以改进或做其他方式。只是主要逻辑如何进行一般验证

于 2012-04-05T05:38:37.097 回答