如何在选择中排除选项的第一个值



我有一个小问题,不知道如何解决。

我的请求中有这样的选择

<select class="form-control" name="start_time" id="time">
<option>Aanvangstijd *</option>
<option value="11:00" id="time">11:00</option>
<option value="11:30" id="time">11:30</option>
<option value="12:00" id="time">12:00</option>
</select>

但是第一个选项<option>Aanvangstijd *</option>不应该通过我请求中的验证,但它当然通过了,因为它有一个值。

这是我的请求

public function rules()
{
return [
'name' => 'required',
'phone' => 'required',
'email' => 'required',
'msg' => 'required',
'start_time' => 'required',
'avg' => 'required',
];
}

所以我的问题是,我如何才能让它工作,它只有在通过了一个不是'Anvangtijd*`的选项时才通过这个验证

Laravel有很好的验证规则,因此您可以严格而具体地确定输入中允许的内容,包括日期/时间格式。在我看来;start_time";输入

  • 需要
  • 成为字符串
  • 共5个字符
  • 并且是有效时间

所以,我们可以这样写:

public function rules()
{
return [
'name' => 'required',
'phone' => 'required',
'email' => 'required',
'msg' => 'required',
'start_time' => 'required|string|size:5|date_format:H:i',
'avg' => 'required',
];
}

也许你希望将时间范围限制在11:00到12:00之间,或者,特别是:

  • 等于或在11:00之后
  • 并且等于或在12:00之前

因此,您可以在验证中添加以下规则:

'start_time' => 'required|string|size:5|date_format:H:i|after_or_equal:11:00|before_or_equal:12:00'

此外,您可能希望限制";start_time";仅为11:00、11:30或12:00:

'start_time' => 'required|string|size:5|date_format:H:i|after_or_equal:11:00|before_or_equal:12:00|in:11:00,11:30,12:00',

在和中,我们可以通过使用数组语法来提高可读性:

public
function rules()
{
return [
'name' => 'required',
'phone' => 'required',
'email' => 'required',
'msg' => 'required',
'start_time' => [
'required',
'string',
'size:5',
'date_format:H:i',
'after_or_equal:11:00',
'before_or_equal:12:00',
Rule::in(['11:00', '11:30', '12:00']),
],
'avg' => 'required',
];
}

还有一条建议:不要相信任何人,甚至不要相信你!即使你写了前端代码,并且(你认为(你100%确定你知道你的html表单将发送给你的后端,请使用良好、严格的验证规则。

最新更新