我有一個小問題,我不知道如何解決它。
我的請求中有這樣的選擇
<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',
];
}
所以我的問題是,我怎樣才能讓它作業,它只在傳遞一個不是 Aanvangstijd *` 的選項時才通過這個驗證
uj5u.com熱心網友回復:
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 表單將向您的后端發送什么,請使用良好、嚴格的驗證規則。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/514394.html
標籤:拉拉维尔验证要求
