2017-08-01 32 views
0

我用laravel 5.3如何在驗證laravel中設置比較日期時間?

我laravel驗證這樣的:

<?php 
namespace App\Http\Requests; 
use Illuminate\Foundation\Http\FormRequest; 
class AddCartRequest extends FormRequest 
{ 
    public function rules() 
    { 
     return [ 
      'id'=>'required|numeric', 
      ... 
      'request_date'=>'required' 
     ]; 
    } 
} 

如果REQUEST_DATE的價值是

2017年1月8日13:00:00

我想添加如下條件:

如果要求日期<現在+5小時,則它會顯示消息:「要求日期必須大於5小時後」

我該怎麼辦?

+1

你最有可能需要編寫自定義驗證規則。 – fubar

+0

@fubar,如何?你嘗試用代碼回答。在我看來它只是需要在這裏添加:''request_date'=>'required | ...'' 但我很困惑,要添加它 –

+1

[自定義驗證規則文檔](https://laravel.com/文檔/ 5.3 /驗證#定製驗證規則)。當你有問題時,你先嚐試再回來。 – fubar

回答

1

我認爲你可以使用after:date

場下驗證必須在給定日期後的值。 日期將被傳遞到PHP strtotime函數。

你只需要使用像這樣創造合適的日期字符串:

'request_date'=>'after:'.date(DATE_ATOM, time() + (5 * 60 * 60)), 

看來,你也可以連接這些規則是這樣的:

'request_date' => 'required|date_format:Y-m-d H:i:s|after:5 hours' 
+0

當然,您需要使用'request_date'值,而不是當前時間? – fubar

+0

他要求'現在+ 5小時'。這是對輸入日期的驗證。如果輸入的日期不晚於現在至少5個小時,則此驗證將失敗。這就是要求的。 – gview

+1

@gview,我試試這個:''request_date'=>'required | date_format:Y-m-d H:i:s | after:5 hours'',it works –