处理CodeIgniter表单验证(规则键和数据类型)

时间:2017-07-04 22:02:56

标签: codeigniter validation codeigniter-3

好的,所以我一直在寻找这个问题的一段时间,但无法找到答案(或者至少是一些直接答案)给我解释了这个问题。

我一直在使用CodeIgniter 3.x表单验证库,所以我有一些这样的数据:

// Just example data
$input_data = [
    'id'        => 1,
    'logged_in' => TRUE,
    'username'  => 'alejandroivan'
];

然后,当我想验证它时,我使用:

$this->form_validation->set_data($input_data);
$this->form_validation->set_rules([
    [
        'field'    => 'id',
        'label'    => 'The ID to work on',
        'rules'    => 'required|min_length[1]|is_natural_no_zero'
    ],
    [
        'field'    => 'username',
        'label'    => 'The username',
        'rules'    => 'required|min_length[1]|alpha_numeric|strtolower'
    ],
    [
        'field'    => 'logged_in',
        'label'    => 'The login status of the user',
        'rules'    => 'required|in_list[0,1]'
    ]
]);

if ( $this->form_validation->run() === FALSE ) { /* failed */ }

所以我在这里有一些问题:

  • label密钥真的有必要吗?我没有以任何方式使用表单验证自动生成的错误消息,我只是想知道数据是否通过了验证。如果我省略它会不会失败?由于这将是一个JSON API,我真的不想打印字段的描述,只是我已经定义的静态错误。
  • 在我的示例的username字段中,required规则是否会检查长度?换句话说,在这种情况下,min_length是可选的吗? alpha_numeric ...的相同问题是空字符串被视为字母数字?
  • logged_in字段(布尔值)中,如何查看TRUEFALSEin_list[0,1]是否足够?我也应该加入required吗?有类似is_boolean的内容吗?

提前谢谢。

1 个答案:

答案 0 :(得分:0)

  1. "标签"密钥是必要的,但它可以是空的。
  2. " required"规则不检查长度,也不检查" alpha_numeric"。它检查是否存在值,它不检查所述值的长度。为此,有min_length []和max_length []。
  3. 如果您只传递0或1,那么这可能是最简单和最短的路线。