Пользовательские сообщения об ошибках после отправки данных 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 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

Исправлены ли три серийных номера?

common sense 19.11.2018 11:58

что вы имели в виду?

Devi 19.11.2018 12:41

У вас за все время всего 3 серийных номера или можно сумму поднять. Если это так, вам придется каждый раз настраивать правила и Контроллер.

common sense 19.11.2018 12:56

Вы можете ввести до 3 серийных номеров, но не более 3

Devi 19.11.2018 12:59
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
75
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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!',
   ];
}

Где мне реализовать "$ i", потому что он говорит, что он не определен, и я не знаю, где его определить: o И спасибо за подробный ответ!

Devi 19.11.2018 13:30

@Devi проверяет старое значение в вашем файле лезвия, например @foreach (old ('serialnumber') as $ i => $ value)

Tarun Saini 19.11.2018 13:36

Есть ли где-нибудь ошибка в кавычках? В поле ввода

Devi 19.11.2018 13:50

И мое поле ввода исчезает, когда я реализую if и foreach ..

Devi 19.11.2018 14:11

это только для старых значений, когда у вас есть ошибки, в противном случае используйте простой ввод html

Tarun Saini 19.11.2018 14:17

Другие вопросы по теме