我正在Laravel中创建一个表单,该表单具有两个字段:departure-date
和return-date
。我正在尝试创建自定义验证逻辑,在其中输入必须的出发日期应在用户填写表格的同一天或其他任何日期。 return-date
也应该在departure date
之后。请协助?
表单布局
<!-- Departure date-->
<div class="form-line registar2 love {{ $errors->has('departure_date') ? ' has-error' : '' }}">
<input type="date" class="form-input" name="departure_date" value="{{ old('departure_date') }}" required>
<label>Departure Date *</label>
<div class="error-label">Field is required!</div>
<div class="check-label"></div>
@if ($errors->has('departure_date'))
<span class="help-block">
<strong>{{ $errors->first('departure_date') }}</strong>
</span>
@endif
</div>
<!--End departure-->
<!-- Return date-->
<div class="form-line registar2 move {{ $errors->has('return_date') ? ' has-error' : '' }}">
<input type="date" class="form-input" name="return_date" value="{{ old('return_date') }}" required>
<label>Return Date *</label>
<div class="error-label">Field is required!</div>
<div class="check-label"></div>
@if ($errors->has('return_date'))
<span class="help-block">
<strong>{{ $errors->first('return_date') }}</strong>
</span>
@endif
</div>
<!-- End return date-->
控制器中的验证
public function validatePlanEntries(Request $request)
{
$validation = $this->validate($request, [
'departure_date' => 'required',
'return_date' => 'required'
]
);
}
答案 0 :(得分:3)
public function validatePlanEntries(Request $request)
{
$validation = $this->validate($request, [
'departure_date' => 'required|date|after:now',
'return_date' => 'required|date|after:departure_date',
]
);
}
仅供参考:after:xxxxx规则与另一个输入字段进行比较,或者遵循本机DateTime PHP类的规则。因此,您可以输入after:now +2 hours
。
要覆盖消息并编写您自己的消息,请创建一个messages()
函数,如下所示:
public function messages()
{
return [
'departure_date.required' => 'Departure date is required',
'departure_date.after' => 'Please choose a date in the future',
'return_date.required' => 'Return date is required',
'return_date.after' => 'Your return date is before departure'
];
}
如果您正在寻找一种jQuery解决方案以使日期选择更加用户友好并且减少错误限制,则可以看看Bootstrap Datepicker,这可能是值得的。祝您项目顺利!
答案 1 :(得分:0)
@Dimitri Mostrey您好,根据您的回答,我如何在出发日期后4天进行验证