提交数据Laravel后的自定义错误消息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了提交数据Laravel后的自定义错误消息相关的知识,希望对你有一定的参考价值。
我已经问过这个问题,但这次有一些不同的东西。上次问题得到了解决,所以现在我只需要一只手告诉我如何更改代码以便它正常工作。
我改变的是,我已经实现了一种方法,可以一次成功出借一本以上的书。所以现在我有一个完美的阵列。
所以这是我的视图想象这个代码3次为你要借出的每本书:
<div class="form-group row">
<label for="serialnumber" class="col-md-4 col-form-label text-md-right">{{ __('Gerät 1 (serialnumber) :') }}</label>
<div class="col-md-6">
<input id="serialnumber" type="text" class="form-control{{ $errors->has('serialnumber') ? ' is-invalid' : '' }}" name="serialnumber[]" value="{{ old('serialnumber') }}" required @if (Session::has('autofocus')) autofocus @endif>
@if ($errors->any())
<div class="alert alert-danger">The book with this serialnumber is already lend by antoher person
<ul>
</ul>
</div>
@endif
</div>
</div>
这是我的控制器代码:
public function store(BookRequest $request)
{
//if( !Book::find($request->get('serialnumber'))->exists() ) {
$this->middleware('guest');
request()->validate([
'serialnumber' => 'required',
'ma_id' => 'required'
]);
$requestData = $request->all();
$data = [
[
'serialnumber' => $requestData['serialnumber'][0],
'comment' => $requestData['comment'],
'ma_id' => $requestData['ma_id'],
],
[
'serialnumber' => $requestData['serialnumber'][1],
'comment' => $requestData['comment'],
'ma_id' => $requestData['ma_id'],
],
[
'serialnumber' => $requestData['serialnumber'][2],
'comment' => $requestData['comment'],
'ma_id' => $requestData['ma_id'],
]
];
Book::insert($data);
return redirect()->route('borrow.index')
->with('success','Successfully lend the book');
}
最后一个是我的Request.php页面:
<?php
namespace AppHttpRequests;
use IlluminateFoundationHttpFormRequest;
class BookRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'serialnumber[0]' => 'required|unique:borrowed,serialnumber,null',
'serialnumber[1]' => 'required|unique:borrowed,serialnumber,null',
'serialnumber[2]' => 'required|unique:borrowed,serialnumber,null',
'ma_id' => 'required',
];
}
public function messages()
{
return [
'serialnumber' => 'Seems like you have added the same book more than once!',
];
}
}
这是我的错误信息,我试图借出一本已经由另一个人借出的书。在我实现数组之前,这段代码非常完美。我的另一个问题是我如何实现一种方式,显示一条错误消息,上面写着“抱歉,但这本书目前不在我们的数据库中,请按信息按钮并获得一些管理帮助”,这样基本上会出现一条错误消息书不在我们的数据库中,我们有很多书,所以我们可能忘记扫描一本书。非常感谢每一位帮助!!
编辑:忘记错误消息
htmlspecialchars()期望参数1为string,给定数组
答案
改变你的看法:
@if(!empty(old('serialnumber')))
@foreach(old('serialnumber') as $i=>$value)
<input id="serialnumber" type="text" class="form-control{{ $errors->has('serialnumber') ? ' is-invalid' : '' }}" name="serialnumber[]" value="{{ old('serialnumber.'.$i) }}" required @if (Session::has('autofocus')) autofocus @endif>
@endforeach
@endif
其中$ i是您的数组索引
你可以修改你的规则和消息,如:
public function rules(){
return [
'serialnumber.0' => 'required|unique:borrowed,serialnumber,null',
'serialnumber.1' => 'required|unique:borrowed,serialnumber,null',
'serialnumber.2' => 'required|unique:borrowed,serialnumber,null',
'ma_id' => 'required',
];
}
要么
public function rules(){
return [
'serialnumber.*' => 'required|unique:borrowed,serialnumber,null',
'ma_id' => 'required',
];
}
和
public function messages()
{
return [
'serialnumber.*' => 'Seems like you have added the same book more than once!',
];
}
以上是关于提交数据Laravel后的自定义错误消息的主要内容,如果未能解决你的问题,请参考以下文章
如何让 Laravel 返回 JSON REST API 的自定义错误