لارافيل Validation - الجزء الخامس - date, date format, before, after, equal

لارافيل Validation - الجزء الخامس - date, date format, before, after, equal

2024-11-21 وقت القراءه : 3 دقائق

date

يتحقق إذا كان التاريخ المدخل من نوع date

فإذا كان لدي الفورم التالي

<form action="{{route('validation.store')}}" method="POST">
    @csrf
    <div class="container">
        @error('started_at')
        <div class="alert alert-danger">{{$message}}</div>
        @enderror
        <input type="date" name="started_at" class="form-control"/>
        <button type="submit" class="btn btn-primary">Add</button>
    </div>
</form>

للتحقق أن حقل started_at يرسل بيانات على شكل date

$request->validate([
    'started_at'=>'required|date',
]);

أما إذا أردنا صيغة معينة للتاريخ المرسل مثلا Y/m/d

$request->validate([
    'started_at'=>'required|date|date_format:Y/m/d',
]);

فإذا تم إدخال صيغة مختلفة سوف أحصل على الخطأ التالي

إذا كنا نريد التحقق أنه يتم إدخال التاريخ مع الوقت

$request->validate([
    'started_at'=>'required|date|date_format:Y/m/d h:i:s',
]);


before & after

إذا كنت أريد التحقق أن التاريخ المدخل قبل تاريخ اليوم

$request->validate([
    'started_at'=>'required|date|before:today',
]);

وإذا تم إدخال تاريخ بعد تاريخ اليوم سوف أحصل على الخطأ التالي

أما إذا كنت أريد أن يكون التاريخ بعد تاريخ اليوم نستخدم after

$request->validate([
    'started_at'=>'required|date|after::today',
]);


كذلك يمكن إستخدام before, after مع حقل أخر، مثلا لدي حقلين للتاريخ 

<form action="{{route('validation.store')}}" method="POST">
    @csrf
    <div class="container">
        @error('started_at')
        <div class="alert alert-danger">{{$message}}</div>
        @enderror
        <input type="date" value="{{ old('started_at') }}" name="started_at" class="form-control"/>
        @error('end_at')
        <div class="alert alert-danger">{{$message}}</div>
        @enderror
        <input type="date" value="{{ old('end_at') }}" name="end_at" class="form-control"/>
        <button type="submit"  class="btn btn-primary">Add</button>
    </div>
</form>

وأريد أن أتحقق أن end_at تأتي بعد start_at أستخدم التحقق التالي في end_at

$request->validate([
    'started_at'=>'required|date',
    'end_at'=>'required|date|after:started_at',
]);

أما إذا كانت قيمة end_at قبل started_at بالتالي سوف أحصل على الخطأ التالي

أما إذا أردنا أن يكون تاريخ end_at قبل تاريخ started_at بالتالي نستخدم before

$request->validate([
    'started_at'=>'required|date',
    'end_at'=>'required|date|before:started_at',
]);


after or equal

ان يكون قبل تاريخ معين او يساوي تاريخ معين

$request->validate([
    'started_at'=>'required|date',
    'end_at'=>'required|date|after_or_equal:started_at',
]);
$request->validate([
    'started_at'=>'required|date|after_or_equal:today',
]);


before or equal

ان يكون بعد تاريخ معين او يساوي تاريخ معين

$request->validate([
    'started_at'=>'required|date',
    'end_at'=>'required|date|before_or_equal:started_at',
]);
$request->validate([
    'started_at'=>'required|date|before_or_equal:today',
]);
إضافة تعليق
Loading...