Я уже задавал этот вопрос, но на этот раз кое-что изменилось. В прошлый раз проблема была исправлена довольно хорошо, так что теперь мне просто нужна рука, чтобы сказать мне, как изменить код, чтобы он работал правильно.
Что я изменил, так это то, что я реализовал способ успешно одалживать сразу несколько книг. Итак, теперь у меня есть массив, который отлично работает.
Итак, это мой взгляд, представьте этот код 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() expects parameter 1 to be string, array given
что вы имели в виду?
У вас за все время всего 3 серийных номера или можно сумму поднять. Если это так, вам придется каждый раз настраивать правила и Контроллер.
Вы можете ввести до 3 серийных номеров, но не более 3






Измените свое мнение:
@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!',
];
}
Где мне реализовать "$ i", потому что он говорит, что он не определен, и я не знаю, где его определить: o И спасибо за подробный ответ!
@Devi проверяет старое значение в вашем файле лезвия, например @foreach (old ('serialnumber') as $ i => $ value)
Есть ли где-нибудь ошибка в кавычках? В поле ввода
И мое поле ввода исчезает, когда я реализую if и foreach ..
это только для старых значений, когда у вас есть ошибки, в противном случае используйте простой ввод html
Исправлены ли три серийных номера?