使用自动重定向时如何自定义验证错误消息?

问题描述 投票:2回答:1

使用Laravel 5.8和生成的字段名称,我想知道是否可以更改以编程方式使用的验证消息。

此刻,我正在使用控制器中的自动重定向验证方法:

function processRequest(Request $request)
{
    $generated = session()->get('expected_field');
    $request->validate([
        'preset' => 'required',
        $generated => 'required'
    ]);
}

这可以按预期工作,但是默认错误消息导致

{$generated}字段是必需的,这没有用。

我想这样做而不重构为自定义Request类。

laravel laravel-5.8
1个回答
4
投票

resoures/lang/{lang}/validation.php中检出“自定义验证属性”:

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/

'attributes' => [],

这里,可以为各种验证字段设置您自己的显示值。

例如,如果session()->get('expected_field');"first_name",但您想让它说"First Name",则应设置:

'attributes' => [
  'first_name' => 'First Name',
  ...
]

在那个数组中,你会很黄金。验证消息将显示为:

名字字段是必需的。

如果您不喜欢规则的结构/措辞,也可以在“验证语言行”部分中为每个规则更新默认消息。

-编辑-

validate()接受第二个参数,它是验证消息的数组。可以对其进行自定义,以处理session()->get('expected_field');返回的字符串,或者完全忽略它,而使用更通用的错误消息:

$this->validate([
  $generated => 'required'
], [
  // $generated.'.required' => 'The '.ucwords(str_replace('_', ' ', $generated)).' field is required.'
  $generated.'.required' => 'The Anti-Spam field is required.'
]);

使用这种逻辑,无论$generated是什么,验证规则都会触发,但是消息会更通用,或者是$generated的操作>

© www.soinside.com 2019 - 2024. All rights reserved.