اعتبارسنجی با سناریوهای مختلف در لاراول

با سلام و پوزش بابت تاخیر بسیار طولانی در انتشار مطالب، تو این پست می‌خوام در مورد اعتبارسنجی ورودی‌ها با سناریوهای مختلف در فریمورک لاراول صحبت کنم. همونطور که مطلع هستید در لاراول راه‌های زیادی برای اعتبارسنجی داده‌ها وجود داره که هر کدوم مزایا یا معایبی دارند ولی من خودم از روشی استفاده می‌کنم که در ادامه بهش می‌پردازم.

Validation‌ها در هر نرم‌افزار یا وب‌اپلیکیشن از ملزومات توسعه هستند و هر برنامه‌نویسی نیاز داره تا در شرایط مختلف و سناریوهای‌ مختلف ورودی‌هایی که از طرف کاربران میاد رو اعتبارسنجی کنه تا از درستی داده‌ها اطمینان حاصل کنه. یکی از روش‌های این کار در Laravel اینه که ما تو کنترلر Ruleها رو تعریف کنیم و داده‌های ورودی از سمت کاربر رو بهش بدیم و همونجا جواب رو برگردونیم. تو روش زیر یه خورده قضیه فرق می‌کنه. Ruleها در یه کلاس جدا برای هر موجودیت و در سناریوهای مختلف ذخیره میشن و ما بر اساس نیازمون از یکی از اون سناریوها در بخش‌ها مختلف کدمون استفاده می‌کنیم.

برای اینکار من و رضا یه پکیچی نوشتیم که این تو ادامه قراره ازش استفاده کنیم. برای نصبش دستور زیر رو تو ترمینالتون اجرا کنید:

 

حالا فرض کنیم میخواهیم Ruleهای مربوط به کار با موجودیت User رو به وسیله این پکیج مدیریت کنیم. خب برای این‌کار من یه فولدر به نام Validator در پوشه app ایجاد می‌کنم تا تمام کلاس‌های مربوط به اعتبارسنجی‌هام توی این دایرکتوری باشن. برای شروع یک کلاس به نام app/Validators/UserValidator.php ایجاد می‌کنم به شکل زیر:

 

همونطور که دیدید کلاس‌های اعتبارسنج باید از کلاس AbstractValidator مشتق بشن. در مرحله بعدی باید Ruleهامون رو به کلاس اضافه کنیم که برای نمونه من به کلاس بالا دو تا سناریو اضافه می‌کنم:

 

من در کد بالا دو تا سناریو تعریف کردم، یکی برای اعتبارسنجی داده ورودی کاربر در هنگام ثبت‌نام و دیگری در هنگام ورود به سایت و اهراز حویت. تمام سناریوها به شکل بالا نوشته میشن یعنی نام سناریو + پسوند Rules.

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

 

مثال کد بالا یه کنترلر و یه متد برای ثبت‌نامه که ما اومدیم کلاس UserValdiator رو inject کردیم به متدمون و ازش استفاده کردیم. همونطور که میبینید کافیه هنگام استفاده، اسم سناریومون رو تعیین کنید و با صدا زدن متد validate() داده‌هامون رو برای اعتبارسنجی بهش بدیم.

اگر خطایی رخ بده، اکسپشن ValidationException فراخوانی میشه که این اکسپشن دارای متدی به نام getErrors()ـه که حاوی پیام‌های خطای اعتبارسنجی‌مونه و اگر خطایی رخ نده برنامه به کارش ادامه میده.

به دو روش میشه روی‌ دادن این خطا رو مدیریت کرد. یکیش به روشیه که تو مثال کد بالا میبینید و روش دیگه ش اینه که خطا رو تو فایل app/Exceptions/Handler.php مدیریت کنیم که روش دوم بیشتر هنگام نوشتن Apiها برای اینکه کد کمتری بنویسیم کاربرد بیشتری داره.

امیدوارم که این مطلب براتون مفید بوده باشه و اگر نظری یا انتقادی دارید از طریق فرم دیدگاه‌های زیر پست بیانش کنید یا اینکه بهم ایمیل بزنید.

منابعی برای یادگیری زبان برنامه‌نویسی اسکالا

منابعی برای یادگیری زبان‌برنامه‌نویسی Scala

سلام. همونطور که تو پست قبلیم گفتم، تصمیم گرفتم برای زبان‌برنامه‌نویسی آینده‌م، Scala رو انتخاب کنم، برای همین میخوام روند یادگیریم رو تا اونجا که می‌تونم تو بلاگ بنویسم. اگر شما هم مثل من به اسکالا علاقه‌مندید، یه سری منابع بعد از گشت و گذار تو اینترنت پیدا کردم که لیستشون می‌کنم شاید به دردتون خورد. البته سعی می‌کنم این لیست رو به روز نگه دارم.

منابع آنلاین:

– Functional Programming Principles in Scala : یک دوره آموزشی توی coursera

– Ninety-Nine Scala Problems:  نود و نه مساله که بیشترشون الگوریتمیکه برای یادگیری اسکالا

– Scala Best Practices : خب از اسمش معلومه، روش‌های درست برنامه‌نویسی با Scala رو یاد می‌گیرید.

Scala School:  محلی برای یادگیری اسکالا که توسط توییتر ایجاد شده

– Effective Scala : اینم یه سایت دیگه که بازم توسط توییتر پشتیبانی میشه. همونطور که میدونید توییتر با زبان اسکالا توسعه داده میشه.

A Tour of Scala : یه سایت برای یادگیری interactive زبان‌ برنامه‌نوسی اسکالا که مرحله به مرحله با نوشتن کد بهتون scala رو یاد میده.

Stackoverflow: اینم لیست مباحث و ویکی‌هایی که توسط کاربران stackoverflow ایجاد شده

A Scala Tutorial for Java Programmers: آموزش‌هایی برای برنامه‌نویسان جاوا که قصد مهاجرت به اسکالا رو دارند.

Scala Tour : یک منبع دیگه که باز هم به صورت interactive و مرحله به مرحله آموزش میده.

 

کتاب‌های آموزشی:

– Scala for the Impatient

 Programming in Scala: A Comprehensive Step-by-Step Guide : کتابی که خیلی خودندنش سفارش شده.

– Scala in Depth

Scala by example

 

به غیر از مواردی که در بالا اشاره کردم، گروه کاربران اسکالای ایران هم می‌تونه برای یادگیری کمک‌حالتون باشه. البته این گروه تا الان فقط به صورت مجازی فعالیت داره.

شما هم اگه منابع دیگه‌ای می‌شناسید می‌تونید معرفی کنید تا این لیست کامل‌تر بشه.

 

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