仕様
下記のように日本語エラー文言 + 改行タグ + 英語エラー文言と表示させる。
:attributeを承認してください。
The :attribute must be accepted.
使い方
laravel/config/app.php
'locale' => 'en',
↓
'locale' => 'ja_and_en',
ソースコード
laravel/lang/ja_and_en/validation.php
<?php
return error_merge(
array_merge_recursive(
require_once( lang_path('ja/validation.php') ),
require_once( lang_path('en/validation.php') )
)
);
/**
* array_merge_recursive されたエラーファイル(validation.php等)を <br>タグで連結して返す
*
* 引数、戻り値共に配列型想定だが、再帰ループの中で文字列型が来るケースもあるので、タイプヒンティングは記述NG
*
* @param array $errors n次元連想配列。array_merge_recursive されたエラーファイル(validation.php等)
* @return array n次元連想配列。array_merge_recursive されたエラーファイル(validation.php等)
*/
function error_merge($errors) {
if ( !is_array($errors) ) {
// none
} else {
// エラー文言を連結する
if ( 2 === count($errors) && isset($errors[0], $errors[1]) ) {
$tmp = $errors[0] . '<br>' . $errors[1];
return $tmp;
} else {
foreach ($errors as $key => $value) {
$errors[$key] = error_merge($value);
}
}
}
return $errors;
}
まとめ
- エラーが発生する度に毎回エラー文言配列をマージしているので、マージした結果をファイルとして生成した方が良い
- 詳しい調査せず作ったが、もっと良い方法ありそう