【发布时间】:2020-02-26 15:50:02
【问题描述】:
我正在使用 Laravel 的 HTTP 请求类来验证一些表单数据。对于某些字段,我需要一个闭包来进行自定义验证。
由于我的应用程序有两种本地化版本(英语和德语),如果验证失败,我需要翻译错误消息,我已经这样做了。
我遇到的唯一问题是闭包中的$fail()-消息。
这就是我根据闭包中的当前本地化翻译消息的方式:
if (app()->getLocale() == 'en') {
$fail('Please choose a name for "' .$value. '" in order to continue.');
}
elseif (app()->getLocale() == 'de') {
$fail('Bitte wählen Sie einen Namen für "' .$value. '" um fortzufahren.');
}
我知道我可以使用en.json-文件来翻译整个网站,但我无法使用句子的$valueinside。
我想知道是否有更好的方法来实现这一点?
编辑
由于我使用的是闭包,因此我必须在闭包内编写“默认”德语错误消息,如下所示:
$fail('Bitte wählen Sie einen Namen für "' .$value. '" um fortzufahren.');
这样做,我会在错误消息中得到$value 的值,该消息会显示在视图中,如下所示:
@if ($errors->has('person.*.name'))
<label class="error-small">@lang($errors->first('person.*.name'))</label>
@endif
所以$value变量会插入到消息中,所以我不能再通过json翻译文件访问变量了..
【问题讨论】:
标签: laravel validation localization closures