流明封装.如何加载自定义验证.php消息文件?



我正在为lumen 6.x创建我的第一个软件包。我可以在包中使用我自己翻译的/resources/lang/es/messages.php消息,但由于某种原因,验证消息不起作用,实际上,/resources/lang/es/validation.php被忽略了。

我猜这与验证器在控制器中的实现方式有关,因为翻译是从我的提供程序正确加载的,因此我假设它也正在加载。

我的/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字段的翻译消息。

顺便说一句,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/

仅供参考,我的validation.php如下所示:

<?php
return [
'required' => 'El campo :attribute es obligatorio.',
'attributes' => [
'name' => 'Nombre'
],
];

不确定这是否是最好的方法,但到目前为止它正在起作用。任何改进将不胜感激。

最新更新