https://laravel.com/docs/4.2/validation#custom-validation-rules
カスタムバリデータクラスの設置場所は自由で、今回はcomposerで管理する用のライブラリを作成したので、下記のディレクトリに配置しました。
/vendor/vendor_name/package_name/src/vendor_namespace/Validator/CustomValidator.php
<?php namespace TEST\Validator;
class CustomValidator extends \Illuminate\Validation\Validator {
public function validateTest($attribute, $value, $parameters)
{
// バリデート処理
// OKの場合はtrueを返す
// NGの場合はfalseを返す
}
public function replaceTest($message, $attribute, $rule, $parameters)
{
// バリデートNGの時に表示するメッセージを編集する
return $message;
}
}
元になるルールを作成
$ vi /vendor/vendor_name/package_name/src/vendor_namespace/config/rules.php
<?php
return array(
// 入力チェック
'input_rules' => array(
'name' => 'required|test',
'email' => 'required',
'message' => 'max:2000',
),
);
元になるメッセージを作成
$ vi /vendor/vendor_name/package_name/src/vendor_namespace/config/messages.php
<?php
return array(
'test' => 'エラーです。',
);
利用する側は下記の様に記述する。
$rules = Config::get('package_name::rules.input_rules');
$messages = Config::get('package_name::messages.test');
$validator = \Validator::make(Input::all(), $rules, $messages);
if ($validator->fails()) {
var_dump($validator->messages());
}
さらに下記ファイルの最後に追記する。
vi app/start/global.php
/**
* カスタムバリデータの登録
*/
Validator::resolver(function($translator, $data, $rules, $messages)
{
return new Test\Validator\CustomValidator(
$translator, $data, $rules, $messages);
});
以上で使える様になるはず。