آموزش لاراول – ایجاد form validation

  • خانه
  • آموزش لاراول – ایجاد form validation
Image تحقیقات

آموزش لاراول – ایجاد form validation

با سلام خدمت دوستان عزیز.
امروز میخوام درباره form validation یعنی چک کردن داده های ورودی که کاربر وارد می کند ، صحبت کنیم.form validation خیلی تو پروژه های ما مهم هست و ما همیشه باهاش سرکار داریم.
حالا امروز می خوایم باهم ببینیم چجوری میشه در Laravel این کار رو انجام بدیم .
ظاهر فرم امون رو میخوایم با بوت استرپ درست کنیم که در نهایت به این شکل در میاد :

آموزش لاراول - ایجاد form validation

آموزش لاراول – ایجاد form validation

ما در این برنامه ای که میخوایم بنویسیم کارهای زیر رو انجام میدیم :

1- اعتبار سنجی فریم و اطلاعات ارسالی

2-نمایش ارورهای مروبطه به کاربر

3-ایجاد ارورهای سفارشی

 

Database and Models

خب ابتدا یک پایگاه داده در xamp یا wamp ایجاد کنید تا جداولی که نیاز داریم رو در اون قرار دهیم. جداول رو با استفاده از فریم ورک لاراول ایجاد میکنیم (به وسیله کد).

بعد از اینکه دیتابیس رو ساختیم در شاخه ی 

app/config/local/database.php یا app/config/database.php اطلاعات مربوط به اون رو وارد کنید .

 

Migration :

فریم ورک لاراول همان طور که میدونید امکانی داره به نام Migration که در واقع به وسیله اون ما می تونیم جدول های خودمون رو بسازیم.

برای این کار کافیه در ترمینال دستور زیر را وارد نماییم و اینتر را بزنیم :

$ php artisan migrate:make create_ducks_table --create=ducks

خب تو این دستور ما گفتیم که یک  Migration ایجاد کن با نام  create_ducks_table و در انتهای دستور با عبارت  create=ducks گفتیم که نام جدول مورد نظر ما ducks است.

پس از اجرای این دستور  Migration ما ساخته می شود و در شاخه app/databases/migrations/ با نامی که براش تعریف کردیم ایجاد خواهد شد .

 

 

Validating Our Form

خب حالا که View رو هم ایجاد کردیم و فرم رو ساختیم میریم سراغ ولیدیشن اطلاعات ارسال شده از طریق فرم.همان طور که در کدها ی بالا مشاهده کردین ما action=”/ducks”  را برای فرم قرار دادیم . پس وقتی ما روی دکمه کلیک میکنیم اطلاعات فرم به صورت POST ارسال خواهد شد و ما از طریق فایل route اون رو مسیر دهی کردیم که به کجا بره .

 

Basic Form Validation

خب حالا اجازه بدین که ما شروع کنیم به ولید کردن اطلاعات ارسال شده به وسیله فرم. میخوایم کدهای ولیدیشن رو در فایل routes.php ایجاد کنیم در واقع همان جا که مسیردهی هارو مشخص کرده بودیم.

برای اطلاعات ارسال شده یک قانون (RULE)ایجاد می کنیم و چک می کنیم که آیا به این قانون ها هماهمگ است یا خیر..اگر هماهنگ نبود دوباره کاربر را به همان صفحه قبلی بر میگردانیم (Redirect) و ارور هم به کاربر نشون میدیم.

من میام کدهای رو تغییر میدم :

 

این یه روش نشان دادن ارور ها به کاربر هست که همه ارور ها را می توانیم مثلا در بالای فرم زیر هم به کاربر نمایش دهیم.حتی میتونیم ارورها را زیر هر input نشان دهیم برای این کار باید مطالب کد زیر : برای هر Input کد اش رو بنویسیم :

// select the first error that corresponds to the name field
{{ $errors->first('name') }}

این خط ارور مربوط به Input با نام و آی دی Name را چاپ می کند . برای فیلدهای دیگر هم باید قرار دهین .

 

توجه کنید که علامت های {{}} مربوط به تمپلت انجین Blade است.

 

کدهای جدید با استفاده از نمایش ارور ها در زیر Input به صورت زیر می باشد :


...
@if ($errors->has('name'))

{{ $errors->first('name') }}

@endif
@if ($errors->has('email'))

{{ $errors->first('email') }}

@endif
@if ($errors->has('password'))

{{ $errors->first('password') }}

@endif
@if ($errors->has('password_confirm'))

{{ $errors->first('password_confirm') }}

@endif

...

پس ما در این کد کاربر را به صفحه فرم انتقال میدیم دوباره و اطلاعات فرم را به جز پسورد ، به صفحه فرم ارسال می کنیم تا اونجا در فیلدهای name,Email و .. قرار گیرد.

همان طور که می دانید در HTML در فیلدهای Input خاصیتی به نام Value وجود داره که مقدار پیشفرض اون Input  رو میتونیم قرار بدیم اونجا. پس از همین خصوصیت کمک میگیرم ما هم :

این کد را باید در فرم و input  های خودمون قرار بدیم :

{{ Input::old('name') }}

این هم کدهای تغییر یافته ی View :


...
@if ($errors->has('name'))

{{ $errors->first('name') }}

@endif
@if ($errors->has('email'))

{{ $errors->first('email') }}

@endif
...

 

آموزش لاراول Laravel

آموزش لاراول Laravel

Custom Error Messages

آخرین چیزی که امروز می خوایم مدیریت کنیم در form validation ، ایجاد پیغام های خطای سفارشی هست. یعنی خودمون متن یک پیغام رو بسازیم و به کاربر نمایش دهیم .

// app/routes.php

// route to process the ducks form
Route::post('ducks', function()
{

	// create the validation rules ------------------------
	$rules = array(
		'name'             => 'required', 						// just a normal required validation
		'email'            => 'required|email|unique:ducks', 	// required and must be unique in the ducks table
		'password'         => 'required',
		'password_confirm' => 'required|same:password' 			// required and has to match the password field
	);

	// create custom validation messages ------------------
	$messages = array(
		'required' => 'The :attribute is really really really important.',
		'same' 	=> 'The :others must match.'
	);

	// do the validation ----------------------------------
	// validate against the inputs from our form
	$validator = Validator::make(Input::all(), $rules, $messages);

	// check if the validator failed -----------------------
	if ($validator->fails()) {

 

در خط 19 تا 23 ما پیغام های ارور رو خودمون تغریف کردیم  و گفتیم اگر کاربر داخل فیلدها چیزی وارد نکرده بود (Required) چه پیغامی رو نشون بده و اگر تکرار پسورد با پسورد تطابق نداشت (Same) چه پیغامی رو نشون بده .

 توجه کنید که ما اومدیم از :attribute و :other هم استفاده کردم داخل پیغام خطامون که باید حتما باشه و اشاره می کنه به فیلد مربوطه 

 

 

و این هم شکل نهایی ارور ها ی اختصاصیمون :

آموزش لاراول Laravelآموزش لاراول Laravel

 

 

Model Level Rules

تقریبا کار ما تموم شده دیگه و چیز جدیدی نداریم برای کار ولی این رو هم در آخر اضافه کنم که ما  اومدیم در بالا کدهای اعتبارسنجی فرممون رو در Route.php وارد کردیم. میتونیم اعتبار سنجی را در Model ها هم انجام بدیم.

در واقع ما قانون های اعتبار سنجی رو در Model وارد میکنیم و در Route.php اون رو صدا میزنیم :

<?php
// app/models/Duck.php

class Duck extends Eloquent {

	protected $fillable = array('name', 'email', 'password');

	public static $rules = array(
		'name'             => 'required', 						// just a normal required validation
		'email'            => 'required|email|unique:ducks', 	// required and must be unique in the ducks table
		'password'         => 'required',
		'password_confirm' => 'required|same:password' 			// required and has to match the password field
	);

}

 

برای دسترسی به Model ها از طریق فایل های دیگه باید به این گونه عمل کنیم :

ModelName::$rules

 

یعنی مثلا در فایل Route.php کد زیر را وارد می کنیم و قانون هامون رو که در Model تعریف کردیم رو استفاده می نماییم :

$validator = Validator::make(Input::all(), ModelName::$rules);

 

خب اینم از آموزش امروز.حتما باید قبل از این آموزش شما با مفاهیم مقدماتی فریم ورک لاراول آشنا باشین و یه مروری کرده باشین.ساختار کلی اون رو بشناسین.

من فایل های این جلسه رو براتون قرار میدم اینجا تا استفاده کنید و تمرین نمایید .

دانلود فایل های آموزش لاراول