我已经问过这个问题,但是这次有些不同。上次该问题已得到很好的解决,所以现在我只需要帮助我告诉我如何更改代码即可正常工作。
我改变的是,我实现了一种方法,可以一次成功借出一本书。所以现在我有了一个可以完美工作的数组。
所以这是我的观点。想象一下,此代码对于您要借出的每本书都是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 App\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
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为字符串,给定数组
答案 0 :(得分:1)
更改视图:
@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!',
];
}