【问题标题】:Laravel 5.x. Throwing Manual error from form validationsLaravel 5.x。从表单验证中抛出手动错误
【发布时间】:2017-10-09 06:38:36
【问题描述】:
有没有办法在 laravel 中引发手动表单验证错误。假设有一个功能可以检查信用卡号码,如果失败,我想设置一个错误并将用户重定向回表单。我正在寻找类似的东西。
private function validateCreditCard() {...}
if (!validateCreditCard()) {
# Throw a form validation error here.
}
【问题讨论】:
标签:
php
forms
laravel
validation
laravel-5
【解决方案1】:
其实在 Laravel 中有很多种验证方式。
- 来自控制器
Validator::make($request->all(), [
'ccv' => 'required|numeric|max:3',
'card_number' => 'required',
'expiry_date' => 'required',
])->validate();
- 在代码中明确指定要将请求重定向到的位置
$validator = Validator::make($request->all(), [
'ccv' => 'required|numeric',
'card_number' => 'required',
'expiry_date' => 'required',
]);
if ($validator->fails()) {
return redirect('pay/with/creditcard')
->withErrors($validator)
->withInput();
}
- 在第一次验证后进行另一次验证,例如(检查卡是否可借记)
$validator = Validator::make(
'ccv' => 'required|numeric',
'card_number' => 'required',
'expiry_date' => 'required',); //your normal validation here. e.g ccv, required fields etc.
$validator->after(function ($validator) {
if (!$this->validateCreditCard()) { //do another validation e.g check if card is debitable
$validator->errors()->add('credit_card', 'Something is wrong with this credit card!');
}
});
您可以重定向回付款表单。假设您的路线是'pay/with/creditcard'
if ($validator->fails()) {
return redirect('pay/with/creditcard')
->withErrors($validator)
->withInput();
}