24 مرداد 1398 ساعت 21:08

5 قابلیت جالب در مورد Validation درلاراول که شاید ندانید!

در لاراول نیزروش های متفاوتی برای اعتبار سنجی داده ها دارد که یکی از آن ها استفاده از کلاس ValidatesRequests  می باشد. این کلاس توابع مختلفی برای کار با انواع داده از داده های متنی، عددی و... گرفته تا آرایه ها و حتی بررسی وجود یک مقدار در دیتابیس! بله وجود یک مقدار در دیتابیس را نیز می توانید در لاراول و در بخش validation بررسی کنید! و دیگر لازم نیست در کنترلر یا حتی سرویس خود با کئوری های آنچنانی! اقدام به بررسی یک مقدار نمایید.

لاراول یک فریم وورک php می باشد که امکانات بسیاری را در اختیار توسعه دهندگان قرار داده تا با سرعت بالاتر و البته با لذت بیشتر کد های خود را نوشته و اجرا نمایید.

همانطور که می دانید یکی از مهمترین بخش های هر سیستمی قسمت اعتبار سنجی آن می باشد. چرا که ممکن است داده های متفاوتی از سمت کاربران به سرور ارسال شود که ممکن است برخی از این داده ها نیز به قصد خرابکاری در دیتابیس و اختلال در اپلیکیشن باشد.

در لاراول نیزروش های متفاوتی برای اعتبار سنجی داده ها دارد که یکی از آن ها استفاده از کلاس ValidatesRequests  می باشد.

این کلاس توابع مختلفی برای کار با انواع داده از داده های متنی، عددی و... گرفته تا آرایه ها و حتی بررسی وجود یک مقدار در دیتابیس! بله وجود یک مقدار در دیتابیس را نیز می توانید در لاراول و در بخش validation بررسی کنید! و دیگر لازم نیست در کنترلر یا حتی سرویس خود با کئوری های آنچنانی! اقدام به بررسی یک مقدار نمایید.

در این مطلب قصد دارم 5 قابلیت جالب که شاید کمتر کسی با آنها کار کرده است را به شما معرفی کنم پس تا انتهای مطلب با ما همراه باشد.

 

1- unique

گاهی مواقع نیاز داریم مقادیر unique (یکتا) را در دیتابیس وارد کنیم. برای نمونه فرض کنید برای عضویت کاربران ما نمی توانیم دو کاربر با ایمیل یا نام کاربری یکسان داشته باشم. پس باید این مقادیر در دیتابیس unique باشند. شما میتوانید هنگام عضویت با یک qoury موجود بودن یا نبودن یک ایمیل را بررسی کنید. اما دیگر لازم به این کار نمی باشد! شما می توانید در هنگام اعتبار سنجی داده های ارسالی کاربر بررسی کنید که ایا برای نمونه ایمیل ارسال شده unique می باشد یا خیر؟!

به کد زیر دقت کنید:

public function store(Request $request)
{
    $validatedData = $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

    // The blog post is valid...
}

  در این کد ما با قرار دادن (unique:posts) به لاراول گفته ایم که فیلد title باید در جدول posts بصورت یکتا باشد! پس به راحتی اگر یک title تکراری از سمت کاربر ارسال شود با خطای اعتبار سنجی روبرو خواهد شد. شما می توانید به این صورت فیلدهای unique را اعتبار سنجی کنید.

 

2- required_if

تصور کنید شما دو فیلد نوع شرکت و شماره تماس شرکت دارید و میخواهید وقتی کاربر نوع شرکت را برابر 1 وارد کرد باید حتما شماره تماس شرکت را نیز وارد کند و اگر نوع شرکت را وارد نکرد، لاراول نیز فیلد شماره تماس را ضروری حساب نکند.

برای نمونه به کد زیر دقت کنید:

$request->validate([
			'companyType'   => 'nullable,mumeric',
			'CompanyPhone' 	=> 'required_if:companyType,1|string',
	]);

 

3- اعتبار سنجی آرایه ها:

گاهی مواقع ممکن است شما یک فایل جیسون بصورت payload به سرور ارسال کنید.  فرض کنید ما یک آرایه (جیسون) بصورت زیر از کاربر خواهیم گرفت:

	{
		"rooms" : [
			[
				"name" => "pishroapp",
				"ages" => ["1","2","3"]
			],
			[
				"name" => "pishroapp",
				"ages" => ["1","2","3"]
			]
		]
	}

حال می خواهیم اعتبار سنجی آن را انجام دهیم.

ما باید به لاراول بگوییم:

1- فیلد rooms بصورت یک ارایه می باشد.

2- فیلد name بصورت string می باشد.

3- فیلد ages بصورت یک آرایه می باشد که مقادیر درون آن عددی می باشند.

پس اعتبار سنجی ما بصورت زیر خواهد شد.

$request->validate([
			'rooms'   		=> 'array',
			'rooms.*.name' 	=> 'string',
			'rooms.*.ages' 	=> 'array|numeric',
	]);

 

به همین سادگی ما اعتبار سنجی را را می توانیم برای انواع آرایه انجام دهیم!

 

4- after:date

شاید شما بخواهید زمانی را که از کاربر می گیرید از زمان مشخصی بیشتر باشد! لاراول فکر اینجای کار رو هم کرده و شما به سادگی با استفاده از after می توانید بصورت زیر زمان مورد نظرخود را برای اعتبار سنجی وارد کنید.

فرض کنید ما یک فیلد Date داریم و میخواهیم زمانی که کاربر وارد می کند نباید کمتر از امروز باشد، پس اعتبار سنجی آن بصورت زیر خواهد شد:

$request->validate([
			'Date'   		=> 'date|after:'.Carbon::now(),
	
	]);

به همین راحتی شما می توانید تاریخ های مورد نظر خود را با استفاده از Carbon ایجاد نمایید تا لاراول به راحتی تاریخ را اعتبار سنجی کند و اگر از زمان مورد نظر کمتر بود به کاربر خطا بدهد.

 

5- after_or_equal:date

این تابع نیز همانند after میباشد، با این تفاوت که زمان ارسالی از سمت کاربر می تواند برابر یا بزرگتر از امروز باشد، در حالی که با استفاده از after زمان باید حتما بیشتر از امروز می بود.

به نمونه زیر دقت کنید:

	$request->validate([
			'Date'   		=> 'date|after_or_equal:'.Carbon::now(),
	
	]);

 

برای نمونه در دو اعتبار سنجی 4 و 5:

اگر کاربر تاریخ امروز را برای حالت 4 بفرستد با خطا مواجه خواهد شد اما در حالت 5 خطایی نخواهد گرفت.

 

امیدوارم این مطلب برای شما مفید بوده باشه. البته توابع بسیار جالب دیگه ای هم هست که اگر از بخش نظرات اعلام کنید برای شما حتما می زارم:)

129 admin
نظرات

برای اطلاع از پاسخ به نظر شما می توانید ایمیل یا شماره موبایل خود را وارد نمایید. *

ایمیل و شماره موبایل شما کاملا مخفی خواهد ماند و در سایت نمایش داده نخواهد شد. *

پاسخ به نظر
اگر نظری برای این مطلب ارسال شد از طریق ایمیل مرا اطلاع بده!

هنوز برای این مطلب نظری ارسال نشده است!
0