作成日:2018-01-15, 更新日:2018-07-19
基本
1.独自のvalidationルールを準備
2.独自のvalidationルールを読み込んで実行
以下、「classes/util/validationrule.php」に独自ルールのファイルを用意し、「ルール名:zebra」とする場合。
参考:FuelPHPが用意してくれている各ルール
FuelPHPが用意してくれている各ルールは「/fuel/core/classes/validation.php」の「* The validation methods」以降に記載。
独自のvalidationルールを準備
・戻り値を「true / false」にする。
▼classes/util/validationrule.php
<?php class Util_Validationrule { public static function _validation_zebra($data) { if (条件) { return true; } else { // エラーにしたいとき return false; } } }
エラーメッセージの設定
日本語でいく場合:「lang/ja/validation.php」に記載する
fuelphp validationのエラーを日本語表示
'zebra' => エラーメッセージ,
参照:fuelphp validationのエラーを日本語表示
独自のvalidationルールを読み込んで実行
~省略~ $tmpIpt = \Input::post(); // ▼独自のvalidationルールを読み込む $validName = 'my_fieldset'; // 複数回呼び出さないなら何でもいいと思う。 $validation = \Validation::forge($validName); $validation->add_callable('Util_Validationrule'); $validation->add('item', '品名') ->add_rule(zebra); $validation->run($tmpIpt); ~省略~
引数を複数使いたい
▼独自ルール側
public static function _validation_zebra($data, 引数1, 引数2) { ~省略~
▼呼び出し側
~省略~ $validation->add('item', '品名') ->add_rule(zebra, 引数1, 引数2); ~省略~
複雑なルールにするとき
コレは、あくまで個人的なやり方なので良い・悪いは分からないし、他に良い方法があるかもしれない。
・条件によって「エラー文」を作成
・独自ルールに作成した「エラー文」を渡す
・独自ルール側は、「エラー文があったらエラー」にする。
・バリデーションエラーがあるときは、作成した「エラー文」をそのまま表示。
▼「エラー文があればエラー扱い」という独自ルールを追加(「classes/util/validationrule.php」に追記)
public static function _validation_force_error($data='', $errMes="") { if($errMes != '') { return false; } return true; }
▼呼び出し側
~省略~ if ( 条件 ) { // 出力させるエラーメッセージをセット $errMes = 表示するエラーメッセージ } else { $errMes = ''; } $validation->add(〇〇〇, 〇〇〇) ->add_rule('force_error', $errMes); ~省略~
▼エラーメッセージの設定(日本語でいく場合:「lang/ja/validation.php」に記載)
<?php return array( 'force_error' => ':param:1', );
※すでにファイルがあるなら「'force_error' => ':param:1',」を追記。
クロージャーを使う方法もある(※Fuelphpの配列要素のバリデーション)