为什么我的错误消息未在Laravel中显示

时间:2019-07-10 12:24:21

标签: laravel laravel-blade laravel-validation

我在表单上有一个选择输入,当用户没有选择一个值时,我想显示一个错误。由于某种原因,虽然几乎相同的代码在另一种形式上也没有显示错误,但是

有效的代码:

<div class="form-group row">
    <label class="md-col-4 col-form-label text-md-right" for="slesson-date">Datum</label>
    <div class="col-md-6">
         <input id="slesson-date" class="form-control @error('date') is-invalid @enderror" type="date" name="date" required value="{{old('date', date('Y-m-d'))}}">

    @error('date')
           <span class="invalid-feedback" role="alert">
                <strong>{{ $message }}</strong>
           </span>
    @enderror
    </div>
</div>

无效的代码:

<div>
    <select name="code" class="selectpicker form-control" data-live-search="true" data-live-search-normalize="true" data-style="btn-secondary" title="Zoek een leerling">
        @foreach($students as $student)
            <option value={{$student->code}}>{{$student->name}}</option>
        @endforeach
    </select>
    @error('code') 
        <span class="invalid-feedback" role="alert"> 
            <strong>{{ $message }}</strong>
        </span> 
    @enderror
</div>

两个输入字段均使用formrequests进行验证。 当我在视图末尾显示所有错误时,将显示该错误,以便可以使用,只是由于某种原因@error('code')无法识别。

编辑: 我根据请求添加了控制器代码。

public function sLessonsStudent(ValidateSLessonStudent $request)
{
    $validated = $request->validated();

    $code = $validated['code'];
    $sLessons= SLesson::whereHas('studentProperty',function($query) use ($code){
        $query->where('user_code',$code);
    })->select('date','hour','classroom_number')->oldest('date')->orderBy('hour')->get();
    $user = User::where('code',$code)->first();
    $sLessonsJson = $sLessons->toJson();
    return view('sAdmin.sLessonsStudent',compact('sLessonsJson','user'));
}

formrequest验证请求:

class ValidateSLessonStudent extends FormRequest
{


/**
 * Get the validation rules that apply to the request.
 *
 * @return array
 */
public function rules()
{
    return [
        'code'=>['required']
    ];
}

/**
 * {@inheritDoc}
 * @see \Illuminate\Foundation\Http\FormRequest::messages()
 */
public function messages()
{
    return [
        'code.required'=>'Er moet een leerling gekozen worden!'    
    ];
}
}

更新2: 错误在ErrorBag

ViewErrorBag {#438
  #bags: array:1 [
    "default" => MessageBag {#439
      #messages: array:1 [
        "code" => array:1 [
          0 => "Er moet een leerling gekozen worden!"
        ]
      ]
      #format: ":message"
    }
  ]
}

2 个答案:

答案 0 :(得分:0)

经过长时间的反复试验,我发现了问题所在。 以下代码中的class "invalid-feedback"

@error('code') 
    <span class="invalid-feedback" role="alert"> 
        <strong>{{ $message }}</strong>
    </span> 
@enderror

需要带有form-control @error('code') is-invalid @enderror"的表单控件。对于input具有必需类的工作代码,这是正确的,而对于select仅具有类form-control而没有附加@error的第二个代码,则不是这样指令。

答案 1 :(得分:0)

可以通过在类中添加“ d-block”来解决该问题:

 A          R RECORD1
 A                                  1 38'LAB 4'
 A                                  3  3'Please select one of the following-
 A                                       options:'
 A                                  6 11'3.  Maximum Invalid Signon Attempt-
 A                                      s allowed'
 A                                  8 11'5.  Run Instructor''s Insurance Pr-
 A                                      ogram'
 A                                  5 11'2.  Signed on User''s Message Queu-
 A                                      e'
 A                                  1  3'Yathavan Parameshwaran'
 A                                  7 11'4.  Initial number of active jobs -
 A                                      for storage allocation'
 A                                  4 11'1.  Previous sign on by signed on -
 A                                      user'
 A                                 14 11'F3 = Exit'
 A                                 14 31'F21 = Command Line'
 A                                  2 70TIME
 A                                  1 72DATE
 A                                  9 11'Option: '
 A            USERINPUT      2   B  9 19
 A  91                                  DSPATR(RI)
 A  92                                  DSPATR(PC)
 A            MSGTXT1       70   O 11 11
 A            MSGTXT2       70   O 12 11