作成日: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の配列要素のバリデーション)