Php 自定义Laravel验证消息

Php 自定义Laravel验证消息,php,laravel,laravel-validation,Php,Laravel,Laravel Validation,我正在尝试在Laravel 5中创建用于验证的自定义消息。以下是我迄今为止所尝试的: $messages = [ 'required' => 'Harap bagian :attribute di isi.', 'unique' => ':attribute sudah digunakan', ]; $validator = Validator::make($request->all(), [ 'username' => array('re

我正在尝试在Laravel 5中创建用于验证的自定义消息。以下是我迄今为止所尝试的:

$messages = [
    'required'  => 'Harap bagian :attribute di isi.',
    'unique'    => ':attribute sudah digunakan',
];
$validator = Validator::make($request->all(), [
    'username' => array('required','unique:Userlogin,username'),
    'password' => 'required',
    'email'    => array('required','unique:Userlogin,email'),$messages
]);

if ($validator->fails()) { 
    return redirect('/')
        ->withErrors($validator) // send back all errors to the login form
        ->withInput();
} else {
    return redirect('/')
        ->with('status', 'Kami sudah mengirimkan email, silahkan di konfirmasi');   
}   

但它不起作用。该消息仍然与默认消息相同。如何解决此问题,以便使用自定义消息?

您可以提供如下自定义消息:

$rules = array(
            'URL' => 'required|url'
        );    
$messages = array(
                'URL.required' => 'URL is required.'
            );
$validator = Validator::make( $request->all(), $rules, $messages );

if ( $validator->fails() ) 
{
    return [
        'success' => 0, 
        'message' => $validator->errors()->first()
    ];
}

按照您尝试的方式,您错过了替换
:变量的
验证程序::替换程序()

Validator::replacer('custom_validation_rule', function($message, $attribute, $rule, $parameters){
    return str_replace(':foo', $parameters[0], $message);
});

如果您使用
$this->validate()

$rules = [
        'name' => 'required',
        'email' => 'required|email',
        'message' => 'required|max:250',
    ];

    $customMessages = [
        'required' => 'The :attribute field is required.'
    ];

    $this->validate($request, $rules, $customMessages);

Laravel 5.7.*

你也可以试试这样的东西。对于我来说,当您要验证请求时,在方法中生成自定义消息的最简单方法是:

public function store()
{
    request()->validate([
        'file' => 'required',
        'type' => 'required'
    ],
    [
        'file.required' => 'You have to choose the file!',
        'type.required' => 'You have to choose type of the file!'
    ]);
}

用于Laravel8.x7.x6.x
定义了自定义规则后,您可以在控制器验证中使用它,如下所示:

$validatedData = $request->validate([
       'f_name' => 'required|min:8',
       'l_name' => 'required',
   ],
   [
    'f_name.required'=> 'Your First Name is Required', // custom message
    'f_name.min'=> 'First Name Should be Minimum of 8 Character', // custom message
    'l_name.required'=> 'Your Last Name is Required' // custom message
   ]
);
对于本地化,您可以使用:

['f_name.required'=> trans('user.your first name is required'],

希望这有助于…

任何示例如何使用它?为第一种方法添加了示例。这对我来说是最简单的,因为我时间紧迫,只需要在一个地方执行此操作。它非常方便,但是如果您需要在多个地方使用自定义消息,那么将它们全部放在一个地方会更为谨慎。与每个验证语句中都有自定义消息相比,它使跟踪更容易,代码更易读。由于我独特的用例,我对你的答案投了更高的票,我想对你说声谢谢(尽管如此,建议不要使用“谢谢”和“我也是”的帖子,你需要知道你帮了我摆脱了困境,我及时提交了)。非常感谢@Mexen,我很高兴我能帮上忙@Geo4you非常感谢,它真的帮助了我。我应该用什么填写$request var?这与一年前发布的相同。这些年来,没有人指出简单的打字错误。在
Validator::make()
内部,
$messages
变量被意外地放入规则数组中。
//Here is the shortest way of doing it.
 $request->validate([
     'username' => 'required|unique:Userlogin,username',
     'password' => 'required',
     'email'    => 'required|unique:Userlogin,email'
 ],
 [
     'required'  => 'The :attribute field is required.',
     'unique'    => ':attribute is already used'
 ]);
//The code below will be executed only if validation is correct.
//Here is the shortest way of doing it.
 $request->validate([
     'username' => 'required|unique:Userlogin,username',
     'password' => 'required',
     'email'    => 'required|unique:Userlogin,email'
 ],
 [
     'required'  => 'The :attribute field is required.',
     'unique'    => ':attribute is already used'
 ]);
//The code below will be executed only if validation is correct.