LoginSignup
25
24

More than 5 years have passed since last update.

同じバリデーションルールでも、フィールドごとにエラーメッセージを変更する方法

Last updated at Posted at 2014-06-11

概要

例えば、同じ required のバリデーションでも、
テキストフォームの場合だったら「○○を入力してください。」とし、
セレクトボックスの場合だったら「○○を選択してください。」としたくなる。

add_rule にクロージャを設定する方法

add_rule では、以下のようにクロージャを渡すことにより、
その場でルールを追加することができる。

sample.php
$val = Validation::forge();
$val->add('number', '数字')
    ->add_rule(['odd' => function($v) { return (bool)($v%2); }]);

これを利用して以下のように、
各フィールドごとに異なるエラーメッセージを設定する。

sample.php
$val = Validation::forge();

// クロージャを設定
// Validation の _validation_required メソッドを利用する
$required_rule = function ($v) use ($val) { return $val->_validation_required($v); };

// テキストフォーム
$val->add('name', 'お名前')
    ->add_rule(['required_name' => $required_rule]);
$val->set_message('required_name', 'お名前を入力してください。');

// セレクトボックス
$val->add('pref', '都道府県')
    ->add_rule(['required_pref' => $required_rule]);
$val->set_message('required_pref', '都道府県を選択してください。');

複数の場所で、同じバリデーション同じエラーメッセージを出力するのであれば、
独自バリデーションクラスを作成する方法をとったほうが良いと思う。

参考

Validation Errors - クラス - FuelPHP ドキュメント
http://fuelphp.jp/docs/1.7/classes/validation/errors.html

25
24
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
25
24