CodeIgniterのフォームバリデーション機能を使って$_POST['fieldName']の検証を行っている。
$_POST['fieldName']が未定義の時と、定義はされた上で空値が渡された時とで検証を分けたかった。
ルールリファレンスを確認したところ、未定義と空値を判別するルールはない。
requiredを使うとどちらもfalseになってしまう。
仕方がないので、ユーザー定義検証関数を作成して、以下の検証をすることにした。
・$_POST['fieldName']が未定義の時はtrue
・$_POST['fieldName']が指定されたうえ、入力値がなかったらfalse
ルール
<?php $this->form_validation->set_rules('fieldName', 'fieldName', 'callback_custom_min_length[fieldName]');
ユーザー定義検証関数
<?php function custom_min_length($str, $field){ if (!isset($_POST[$field])) { return true; } if ($str == '') { $this->form_validation->set_message('custom_min_length', 'The '.$field.' field must be at least 1 characters in length.'); return false; } return true; }
第一引数の$strには入力値が代入される 第二引数の$fieldには、ユーザー定義検証関数の[]で指定した値が代入される