我在laravel验证中转换嵌套属性时遇到了问题,我使用的代码如下:
$this->validate($request,[
'title.*' => 'required'
]);
和 * 可以是:en、es、fa...以及其他语言
这样做的原因是因为我们不知道网站中使用的确切语言,它可以从管理面板中更改,我们需要为每个语言添加例如产品的“标题”。
'title.en' => 'required'
'title.fa' => 'required'
'title.es' => 'required'
下面的哪些代码几乎可以实现相同的功能:
$this->validate($request, [
'title.*' => 'required',
]);
这段代码一切正常,但问题在于转换这些字段。
验证消息如下所示:
"title.en is required."
但是我在validation.php上添加了en,fa..和每一个单独的语言,比如:
'attributes' => [
'title' => 'TITLE', ###"TITLE" simply is for translation of title for other languages
'en' => 'ENGLISH',
'fa' => 'FARSI',
]
它没有显示这样的信息:
"TITLE ENGLISH is required."
也不可能这样写:
'attributes' => [
'title.en' => 'ENGLISH TITLE',
'title.fa' => 'FARSI TITLE',
]
我尝试在属性中使用数组,例如:
'attributes' => [
'title' => 'TITLE',
'title' => [
'en' => 'English Title',
'fa' => 'Farsi Title',
]
]
但这会导致错误,因为title定义了两次数组和字符串!!
如果有人能帮助我,我会很高兴的。
谢谢,英语不好意思:))
1条答案
按热度按时间46qrfjad1#
您可以通过在
validation.php
中添加attributes
数组来更改验证消息的属性名称,如下所示消息应该是
Title in English is required
,而不是title.en is required.
。