提交数据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为str​​ing,给定数组

答案

改变你的看法:

@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 的自定义错误

Laravel 5.6.7 和 Vue.js 中的自定义错误消息,尤其是组件

GraphQL - 突变响应后的自定义错误消息

在FOSUserBundle中登录后的自定义错误消息

Laravel 中正则表达式规则的自定义验证消息?

laravel 表单请求的自定义错误代码