Php 自定义Laravel验证消息
我正在尝试在Laravel 5中创建用于验证的自定义消息。以下是我迄今为止所尝试的: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
$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.x,7.x,6.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.