3
我想驗證給定的演講。有一些驗證規則,但我想用驗證函數以某種方式擴展它,該驗證函數以3個屬性作爲參數,並檢查數據庫中的其他講座,並且如果沒有講座重疊,則返回有效。講座已經開始,結束DateTime屬性。Laravel驗證整個請求
驗證功能
private function noOtherLecturesOnGivenTime($start, $end, $hall)
{
if(!$start instanceof Carbon) {
$start = new Carbon($start);
}
if(!$end instanceof Carbon) {
$end = new Carbon($end);
}
if(is_null($hall)) {
return true; // if there is no hall defined, all times are acceptable
}
if(!$hall instanceof Model) {
/** @var Hall $hall */
$hall = Hall::find($hall);
}
$overlappingLectures = $hall->lectures()->get()->filter(function ($lecture) use ($start, $end) {
// (Ts < e) and (Te > s)
return $start->lt($lecture->end) and $end->gt($lecture->start);
});
return $overlappingLectures->count() === 0;
}
我不知道如何以及在哪裏把這個功能,所以Laravel的驗證拋出異常,我可以用國際化指定的錯誤消息。
謝謝
我讀,但我想給它既不請求的屬性。我想在驗證所有驗證規則後運行該函數。但我不想格式化422 - 我自己無法處理的實體(所以在驗證掛鉤不適用後)。 –
您正在通過請求傳遞'$ end'' $ end'' $ hall'嗎?只需在自定義驗證規則中獲取您的請求即可獲取您的參數並使用您的功能 – Vuldo