誰かが Laravel 5 について疑問に思っている場合: すべてのデフォルト メッセージのすぐ下にある validation.php にメッセージを追加してください。例えば:
<?php
return [
// .. lots of Laravel code omitted for brevity ...
"timezone" => "The :attribute must be a valid zone.",
/* your custom global validation messages for your custom validator follow below */
"date_not_in_future" => "Date :attribute may not be in future.",
date_not_in_future
カスタム関数はどこにありますかvalidateDateNotInFuture
。Laravel は、任意のフィールドにルールを使用するたびにメッセージを選択しますcustom
。特定のフィールドのグローバル メッセージをオーバーライドする場合を除き、配列を使用する必要はありません。
バリデータを実装する完全なコードは次のとおりです。
Custom Validator (date_format と date_before のローカライズに関するおまけのコメント付き):
<?php namespace App\Services\Validation;
use Illuminate\Validation\Validator as BaseValidator;
/**
* Class for your custom validation functions
*/
class Validator extends BaseValidator {
public function validateDateNotInFuture($attribute, $value, $parameters)
{
// you could also test if the string is a date at all
// and if it matches your app specific format
// calling $this->validateDateFormat validator with your app's format
// loaded from \Config::get, but be careful -
// Laravel has hard-coded checks for DateFormat rule
// to extract correct format from it if it exists,
// and then use for validateBefore. If you have some unusual format
// and date_format has not been applied to the field,
// then validateBefore will give unpredictable results.
// Your best bet then is to override protected function
// getDateFormat($attribute) to return your app specific format
$tomorrow = date('your app date format here', strtotime("tomorrow"));
$parameters[0] = $tomorrow;
return $this->validateBefore($attribute, $value, $parameters);
}
}
ValidatorServiceProvider ファイル:
<?php namespace App\Providers;
namespace App\Providers;
use App\Services\Validation\Validator;
use Illuminate\Support\ServiceProvider;
class ValidatorServiceProvider extends ServiceProvider{
public function boot()
{
\Validator::resolver(function($translator, $data, $rules, $messages)
{
return new Validator($translator, $data, $rules, $messages);
});
}
public function register()
{
}
}
次に、config/app.php に次の行を追加します。
'App\Providers\RouteServiceProvider',
'App\Providers\ValidatorServiceProvider', // your custom validation