CodeIgniter无需回调即可验证表单数据的方法

时间:2012-04-05 01:23:31

标签: codeigniter frameworks validation

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

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

1 个答案:

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

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