FuelPHPでcheckboxのバリデーション
checkboxのバリデーション
公式サイトのValidationを参考に、checkboxのバリデーションを行ってみた。
流れ
- バリデーション用クラスを用意
- コントローラ側でバリデーション用クラスを呼び出し(add_callable)
- 該当のフォームにセット(add_rule)
fuel/app/classes/myvalidation.php
まずは、『classes』の直下にカスタムバリデーションクラスを用意。
『checkbox_val』では、選択された値の正当性をチェック、
『checkbox_require』では、選択項目の数をチェックする。
<?php class MyValidation { /** * 値の正当性チェック */ public static function _validation_checkbox_val($val, $options) { if ($val) { if (!is_array($val)) { return false; } foreach ($val as $v) { if (!array_key_exists($v, $options)) return false; } } return true; } /** * 必須チェック * * $minで最低チェック数を指定 */ public static function _validation_checkbox_require($val, $min = null) { if (!$val || !is_array($val)) { return false; } $min_count = $min ? $min : 1; return count($val) >= $min_count; } }
Controller
checkbox部分のみ抜粋
<?php ... // checkbox $check_list = array( 1 => '映画鑑賞', 2 => '散歩', 3 => 'その他' ); $form->validation()->add_callable(new MyValidation()); $form->add('hobby', '趣味', array('type' => 'checkbox', 'options' => $check_list)) ->add_rule('checkbox_val', $check_list) ->add_rule('checkbox_require', 2);
これでチェックボックスの入力チェックのベースが出来た。