流明封装。如何加载自定义validation.php 消息文件?
Posted
技术标签:
【中文标题】流明封装。如何加载自定义validation.php 消息文件?【英文标题】:Lumen package. How to load custom validation.php messages file? 【发布时间】:2020-04-07 19:54:24 【问题描述】:我正在为 lumen 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();
Controller中的存储功能
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
]);
【问题讨论】:
【参考方案1】:我刚刚找到了解决方案。对于那些面临同样问题的人,我所做的是在引用本地化文件的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
中的属性数组。
另一方面,通过此更改,我可以通过在 resources/lang/vendor/locations/
中添加 validation.php
来覆盖主应用程序中的包 validation.php
文件
仅供参考,我的validation.php
看起来像:
<?php
return [
'required' => 'El campo :attribute es obligatorio.',
'attributes' => [
'name' => 'Nombre'
],
];
不确定这是否是最好的方法,但它目前有效。任何改进将不胜感激。
【讨论】:
以上是关于流明封装。如何加载自定义validation.php 消息文件?的主要内容,如果未能解决你的问题,请参考以下文章