اعتبار سنجی سفارشی در لاراول
داشتم توی اینترنت برای خودم یه چرخی میزدم یه سوال [Quera](https://quera.ir/problemset/85907/) پیدا کردم که سوال به این شکل بود
> علی در حال پیادهسازی سیستم ثبتنام برای یک مرکز آموزشی است و باید سیستمی را پیادهسازی کند تا متقاضیان
> ثبتنام عکسی را در سیستم آپلود کنند.
> شما باید قوانین احراز هویت زیر را روی عکس ها اعمال کنید:
> 1. فایل عکس الزامی است.
> 2. فایل باید حتما عکس و به فرمتهای `jpeg,jpg,png` باشند.
> 3. شما باید قانون (_rule_) جدیدی را در برنامه تعریف کنید تا فقط امکان آپلود عکس با نامهای به فرمت **[عدد]File** مثل `File1.png` و `File342.png` و… را بدهد و اگر نام فایل به این فرمت نبود و زبان سایت انگلیسی بود، خطای `file name is incorrect` و اگر زبان سایت فارسی بود خطای `نام فایل صحیح نیست` را نمایش دهد.
برای انجام دادن ۲تا قانون اول برای احراز هویت خب کار سختی پیش رومون نیست فقط کافیه که بگیم
“`
$request->validate([
\”file\”=>[‘required’,’image’,\”mimes:jpeg,jpg,png\”]
]);
“`
ولی برای قانون سوم نمیشه به همین راحتی عمل کرد…
برای بررسی قانون سوم قبل از هر کاری باید به Rule جدید به پروژه خودمون اضافه کنیم
“`
php artisan make:rule RuleName
“`
دستور بالا برای ما یک فایل php توی مسیر app/Rules میسازه.
“`
getClientOriginalExtension(), \”\”, $value->getClientOriginalName());
return preg_match(\”/^File\d+$/\”, $fileName);
}
“`
اول امدم به php این رو فهموندم که $value از نوع Uploadfile هست
توی خط بعدش امدم پسوند فایل رو از اسم فایل کم کردم و توی خط بعدی به وسیله regex چک کردم اون رو
پارامتر های ریجکس هم به ترتیب زیر هستند
– ^ برای بررسی کردن اول خط
– File هم ثابت ما هست
– \d برای پیدا کردن عدد
– +هم روی پارامتر قبلی اعمال میشه که میگه از پارامتر قبلی حداقل باید یکی وجود داشته باشه
– $ برای بررسی کردن انتهای خط
خب حالا Rule ما کامل شده و باید استفادش کنیم که طرز استفادش به صورت زیر هست
“`
$request->validate([
\”img\” => [‘required’, \”mimes:jpg,png,jpeg\”, new \App\Rules\FileName]
]);
“`
امیدوارم که ساده توضیح داده باشم و متوجه این آموزش شده باشید.
