distinct
تستخدم في حال أن المدخلات على شكل مصفوفة، ولا أريد أن تتكرر قيم المدخلات
لو كان لدي الفورم التالي
<form action="{{route('validation.store')}}" method="POST">
@csrf
<div class="container">
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<input type="text" value="{{ old('score.0') }}" name="score[]" class="form-control"/>
<input type="text" value="{{ old('score.1') }}" name="score[]" class="form-control"/>
<button type="submit" class="btn btn-primary">Add</button>
</div>
</form>كما نلاحظ أن score هي عباره عن مصفوفة، فإذا أردنا أن لا تتكرر قيم المدخلات، يمكن إستخدام distinct
$request->validate([ 'score'=>'required|array', 'score.*'=>'distinct', ]);
أما في حال تكرار قيمة المدخلات فسوف نحصل على الخطأ التالي

لكن يجب الإنتباه، أنه غير حساس لحالة الأحرف فلو تم إدخال a في الحقل الأول و A في الحقل الثاني، فإن التحقق سوف يقبلها، ولجعلة حساس لحالة الأحرف نضيف إلى distinct خيار أخر وهو ignore_case
$request->validate([ 'score'=>'required|array', 'score.*'=>'distinct:ignore_case', ]);

ends with
لفرض أن لدينا فورم لإدخال البريد الإلكتروني، وأريد أن يتم التسجيل فقط من خلال gmail أستخدم ends_with:gmail.com
فلو كان لدي الفورم التالي لإدخال البريد الإلكتروني وأريد التحقق أن البريد الإلكتروني يكون فقط Gmail
$request->validate([ 'email'=>'required|ends_with:gmail.com', ]);
<form action="{{route('validation.store')}}" method="POST">
@csrf
<div class="container">
@error('email')
<div class="alert alert-danger">{{$message}}</div>
@enderror
<input type="text" value="{{ old('email') }}" name="email" class="form-control"/>
<button type="submit" class="btn btn-primary">Add</button>
</div>
</form>وإذا كان البريد الإلكتروني ليس gmail فسوف أحصل على الخطأ التالي

أما إذا كنا نريد أن نسمح لأكثر من مزود بريد إلكتروني مثلا gmail.com, yahoo.com, hotmail.com
$request->validate([ 'email'=>'required|ends_with:gmail.com,yahoo.com,hotmail.com', ]);
starts with
هي عكس end_with، لفرض أن لدي حقل لتعبئة رقم الهاتف، وأريد أن أتأكد ان المدخل يبدأ بـ 00970
<form action="{{route('validation.store')}}" method="POST">
@csrf
<div class="container">
@error('tel')
<div class="alert alert-danger">{{$message}}</div>
@enderror
<input type="text" value="{{ old('tel') }}" name="tel" class="form-control"/>
<button type="submit" class="btn btn-primary">Add</button>
</div>
</form>
$request->validate([
'tel'=>'required|starts_with:00070',
]);كذلك يمكن إضافة أكثر من قيمة للتحقق
$request->validate([ 'tel'=>'required|starts_with:00070,00966,00962', ]);
وإذا كانت القيمة غيرر المسموح بها سوف أحصل على الخطأ التالي

Exclude_if
يتم إسخدامها في حال وجود أكثر من input بحيث يكون الحقل الثاني إجباري، إذا إحتوى الحقل الأول على قيمة معينة
لفرض لدي الفورم التالي
<form action="{{route('validation.store')}}" method="POST">
@csrf
<div class="container">
@error('Country')
<div class="alert alert-danger">{{$message}}</div>
@enderror
<select name="Country" class="form-control">
<option value="">الرجاء إختيار الدولة</option>
<option value="Palestine">Palestine</option>
<option value="Jordan">Jordan</option>
</select>
@error('tel')
<div class="alert alert-danger">{{$message}}</div>
@enderror
<input type="text" value="{{ old('tel') }}" name="tel" class="form-control"/>
<button type="submit" class="btn btn-primary">Add</button>
</div>
</form>وأريد إذا تم تم إختيار Palestine في حقل Country ان يكون tel غير إجباري، أما إذا تم إختيار دولة أخرى أن يكون إجباري
$request->validate([ 'Country'=>'required', 'tel'=>'exclude_if:Country,Palestine|required', ]);
exclude_unless
هي عكس excluded_if بحيث لا يصبح حقل tel إجباري إلا إذا كانت قيمة Country=Palestine
$request->validate([ 'Country'=>'required', 'tel'=>'exclude_unless:Country,Palestine|required', ]);
السلام عليكم اذا عندي حقل وليكن اسمه complete واخر اسمه feedback_status وكان هناك شرط لو قيمه حقل complete =100 وكان حقل feedback_status=PROCESSING اريد ينطي validation على انه حقل feedback_status لازم لايساوي PROCESSING انا حاليا عامله بهذه طريقه if($value[\'complete\'] == 100 && $value[\'feedback_status\'] ===\"PROCESSING\" ){ $value[\'feedback_status\']=\'\'; } وضعت في message \'feedback_status.required\' =>\"If complete is equal 100 the field feedback_status must be not set to PROCESSING\", الحاله الثانيه اذا كان يوزر ليس له لديه صلاحيه اريد امنعه من ادخال البيانات حاليا عامله بهذه طريقه $location=$value[\'location\']; if(in_array($location,$array_all_dgs,true)){ if(!$this->auth->hasPermission(\'electrical_database_\'.$location.\'-DGS\')){ $value[\'location\']=\'\'; } } وفي message \'location.required\' =>\"1-The field LOCATION required. 2-Maybe You don\'t have permission in this DGS you can\'t update\", سؤال هنا هل ب laravel توجد امكانيه وضع تلك شروط ضمن rules بحيث اريد اختصر كود واريده يصير نظامي اكثر