LoginSignup
5
5

More than 5 years have passed since last update.

FuelPHPのバリデーションで「どれか一つは必須」

Last updated at Posted at 2016-09-15

FuelPHPのバリデーションで、複数の項目のうちいずれか一つは必須。
みたいなのがデフォルトでなかったので忘れないようにメモ。

動作環境

FuelPHP 1.6

コード

/**
 * 入力チェック:どれか一つ以上の入力が必須。エラーの場合labelをメッセージとして設定します。
 * ex) add_rule(['required_either'=>$_valid_required_either], array('input1','input2','input3'));
 * 
 * @param mixed $dummy        ダミー引数、使用しない。※FuelPHPのValidationコールバックの第一引数は入力値が入ると決まっているためダミー引数を設置しています。
 * @param array $fieldnames   いずれか一つ以上の入力が必須な入力項目名。array(string, ...)
 *
 * @return bool
 */
$_valid_required_either = ['closure_required_either' => function($dummy, $fieldnames) {
    \Validation::active()->set_message('closure_required_either', ':label がエラーです');
    foreach ($fieldnames as $_key) {
        if (\Validation::active()->input($_key, '')) {
            return true;
        }
    }

    return false;
}];

$vali = \Validation::forge();

// input1, input2, input3のどれか一つがなければ入力エラーにする。
$vali->add('dummy_require_either', 'いずれか入力')->add_rule($_valid_required_either, ['input1','input2','input3']);
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5