我正在为流明6.x创建我的第一个程序包。我可以使用我的软件包中来自/resources/lang/es/messages.php
的自己翻译的消息,但是由于某些原因,验证消息不起作用,实际上/resources/lang/es/validation.php
被忽略。
我猜这与在控制器中实现验证器的方式有关,因为翻译是从我的Provider正确加载的,因此我也假设它也在加载。
我的/resources/lang/es/validation.php
看起来像:
<?php
return [
'required' => 'El campo :attribute es obligatorio.',
];
我在服务提供商中的启动功能:
public function boot()
{
$this->loadTranslationsFrom(__DIR__.'/../resources/lang', 'locations');
$this->loadMigrationsFrom(__DIR__.'/../database/migrations');
$this->loadRoutesFrom(__DIR__.'/../routes/web.php');
// Publishing is only necessary when using the CLI.
if ($this->app->runningInConsole()) {
$this->bootForConsole();
}
}
控制器中的存储功能
public function store(Request $request)
{
//
$validator = Validator::make($request->all(), [
'name' => 'required'
]);
if ($validator->fails()) return $validator->errors();
$resource = Country::create($request->toArray());
return response()->json([
'message' => __('locations::messages.store_success'),
'resource' => $resource
]);
}
也在我的主要.env
流明文件中添加了APP_LOCALE=es
,它非常适合翻译。
所以问题是我无法显示必填name
字段的翻译后的消息。
BTW,con可以在我的测试git存储库中查看整个代码(由于正在开发中,请忽略“州和城市”资料)。https://github.com/Imboga/Locations
提前感谢
编辑:我也尝试过,但是到目前为止还没有运气
public function store(Request $request)
{
//
$this->validate($request, [
'name' => 'required'
]);
$resource = Country::create($request->toArray());
return response()->json([
'message' => __('locations::messages.store_success'),
'resource' => $resource
]);
}
我刚刚找到了解决方案。对于那些面临相同问题的人,我要做的是在validate()
方法中添加引用本地文件的第三和第四参数:
public function update(Request $request)
{
//
$this->validate($request, [
'name' => 'required'
], trans('locations::validation'), trans('locations::validation.attributes') );
$resource = Country::findOrFail($request->id);
$resource->update($request->toArray());
return response()->json([
'message' => __('locations::messages.update_success'),
'resource' => $resource
]);
}
第四个参数必须指向validation.php
中的属性数组。
另一方面,通过此更改,我可以通过在validation.php
中添加validation.php
来覆盖主应用中的程序包resources/lang/vendor/locations/
文件>
FYI,我的validation.php
看起来像:
<?php return [ 'required' => 'El campo :attribute es obligatorio.', 'attributes' => [ 'name' => 'Nombre' ], ];
不确定这是否是最好的方法,但是到目前为止它是可行的。任何改进将不胜感激。