Laravel 5.4 - 下拉列表的自定义消息

Laravel 5.4 - Custom message for a dropdown list

我可以为文本字段创建验证自定义消息,但不能为 .

这是 "unit" 字段的 HTML:

<input type="text" class="form-control" id="unit" name="unit">

这里是 "visitor_id" 字段:

<select id="visitor_id" name="visitor_id" class="form-control">
    @foreach($visitors as $visitor)
        <option value="{{$visitor->id}}"> 
            {{ $visitor->name }}
        </option>
    @endforeach
</select>

控制器:

$rules = [
   'unit'=> 'required|min:2|max:2',
   'visitor_id'=> 'required|not_in:14'
]
 $customMessages = [
    'unit.required' => 'Unit cannot be blank and must have 2 char max',
    'visitor_id.required' => 'Please choose from the list...'
    ];
$this->validate($request, $rules, $customMessages);

如果我将单位字段留空或不遵循 max:2 规则,消息将是它应有的样子:“单位不能为空...”

但是如果我将名为 visitor_id 的下拉列表的值保留为 14,则错误消息将是默认的 "The selected visitor id is invalid." 而不是我需要的; "Please choose from the list..."

附图显示了结果。

不幸的是,我研究了一个多小时,但找不到解决方案。

当然这将是默认消息,因为您只更改了 required 而不是 not_in 因此为了使其正常工作,请在下面添加以下行:

$rules = [
   'unit'=> 'required|min:2|max:2',
   'visitor_id'=> 'required|not_in:14'
]

 $customMessages = [
    'unit.required' => 'Unit cannot be blank and must have 2 char max',
    'visitor_id.required' => 'Please choose from the list...'
    'visitor_id.not_in' => 'Please choose from the list...' 
    ];

$this->validate($request, $rules, $customMessages);

我需要在select字段下方显示错误信息...我的代码如下。

 <div class="col-md-3">
  <select class="custom-select form-control" id="designation_id" value="{{old('designation_id')}}" name="designation_id">
     <option value="" class="disabled">-- Select Designation --</option>
         @foreach ($designations as $designation)
            <option value="{{ $designation->id }}"
                 @if(old('designation_id')== $designation->id) selected="selected" 
                 @endif> {{ $designation->name }} 
            </option>
         @endforeach
  </select>
</div>