提交数据后的自定义错误消息Laravel

时间:2018-11-19 10:41:15

标签: php html laravel laravel-5

我已经问过这个问题,但是这次有些不同。上次该问题已得到很好的解决,所以现在我只需要帮助我告诉我如何更改代码即可正常工作。

我改变的是,我实现了一种方法,可以一次成功借出一本书。所以现在我有了一个可以完美工作的数组。

所以这是我的观点。想象一下,此代码对于您要借出的每本书都是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为字符串,给定数组

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!',
   ];
}