فصل شش - Requests and Response
بخش دوم - اعتبارسنجی درخواست ها
اعتبارسنجی ها عمدتا به 3 روش انجام می شوند. در این پست به 2 روش آن اشاره می شود و روش سوم در پست های بعدی کامل بررسی خواهد شد.
یکی از روش های مرسوم اعتبارسنجی بر روی درخواست ها (ورودی ها POST، GET و...) فراخوانی متد validate از متغیر $request می باشد.
public function store(Request $request)
کد بالا درخواست ما را اعتبارسنجی می کند، به عنوان مثال، مقدار input با نام title باید required، unique و طول حداکثر 255 کاراکتر داشته باشد.
اگر همه این ویژگی ها را داشته باشد اعتبارسنجی درخواست موفقیت آمیز بوده، در غیر اینصورت یک آرایه از error ها ایجاد می شود.
روش دیگر اعتبارسنجی استفاده از فساد Validator است:
$validator = Validator::make($request->all(), [
کد بالا همانند روش اول است، با این تفاوت که می توان اعتبارسنجی را روی داده های دلخواه (پارامتر اول متد make که برابر تمامی ورودی های درخواست قرار کرفته) انجام داد.
هر دو روش مرسوم و پرکاربرد هستند که بسته به نیاز استفاده می شوند.
پس از انجام اعتبار سنجی یک شئ از Validator باز می گردد که متدهایی در اختیار ما می گذارد، در ادامه به بررسی آنها خواهیم پرداخت.
1- متد fails
این متد بررسی میکند که آیا عملیات اعتبارسنجی شکست خورده یا نه.
if ($validator->fails()) {
2- متد validated
اگر اعتبارسنجی موفقیتآمیز باشد، این متد فقط دادههای معتبر (validated) را بازمیگرداند. این روش، دادههای تاییدشده را فیلتر میکند.
$validated = $validator->validated();
3- متد stopOnFirstFailure
اگر بخواهید عملیات اعتبارسنجی بهمحض اولین خطا متوقف شود، از این متد استفاده میکنید.
$validator = Validator::make($request->all(), [
4- متد validate
مقدار اعتبارسنجیشده را باز میگرداند یا اگر خطایی وجود داشته باشد، بهصورت خودکار ValidationException پرتاب میکند. معمولاً در کنترلر استفاده میشود.
$validated = $request->validate([
در این حالت اگر فیلدی نامعتبر باشد، لاراول بهصورت خودکار به صفحه قبل برمیگردد و خطاها را نمایش میدهد.
5- متد validateWithBag
مشابه validate() است ولی خطاها را داخل یک Error Bag خاص ذخیره میکند. برای مثال وقتی چند فرم در یک صفحه داریم و هرکدام باید خطاهای جداگانه داشته باشند.
$request->validateWithBag('updateProfile', [
درصورت بروز خطا، ارورها در یک Bag با نام updateProfile ذخیره می شوند.
6- متد after
پس از اجرای تمام قوانین اعتبارسنجی، میتوانید با این متد، اعتبارسنجیهای سفارشی اضافه کنید.
$validator->after(function ($validator) use ($request) {
7- متد errors
لیست خطاهای اعتبارسنجی را باز میگرداند، معمولاً در ترکیب با fails() استفاده میشود.
$errors = $validator->errors();
8- متد sometimes
اجرا شدن قوانین اعتبارسنجی را وابسته به شرط خاصی میکند.
در این مثال، اگر مقدار subscribe برابر با true باشد، فیلد email اجباری خواهد شد.
متد های دیگری نیز وجود دارد که شامل آموزش نخواهد شد.
درصوتی که یک اعتبارسنجی ناموفق باشد، خطا ها در متغیر $errors در سمت Blade در دسترس خواهد گرفت.
به عنوان مثال:
@if ($errors->any())
کد بالا درصورت وجود خطا اعتبارسنجی، خطا آنها را به کاربر نمایش می دهد.
همچنین می توان از دایرکتیو @error استفاده کنید:
@error('title')
این کد در صورتی که اینپوت title با خطا مواجه شود، متن خطای آن را به کاربر نمایش می دهد.
اگر نیاز به خطا ها از یک Bag خاص داشتید می توانید پارامتر دوم را نیز کامل کنید:
@error('title', 'myBag')
تا این بخش با روش اعتبارسنجی درخواست ها و نمایش خطاهای آن آشنا شدید، در قسمت های بعدی با Ruleهای اعتبارسنجی (required|unique|...) آشنا خواهیم شد.
#laravel #لاراول #فصل_۶
@AmirhDeveloper
.