راکت
حل شده

شرطی کردن اعتبار سنجی با توجه به نوع کاربر

4 پاسخ

سلام دوستان..

من جدول یوزرم دو نوع کاربر داره..

فرض کنید یوزر عادی و ادمین..

با توجه به فیلد زیر:

type = 0 //user
type = 1 //admin

میخوام اعتبار سنجی رو شرطی کنم..

چجوری میتونم توی قسمت اعتبار سنجی لاراول بگم که اگر ادمین بود شماره تلفن الزامی هست ولی اگر یوزر عادی بود اختیاری؟

JBolouri
JBolouri
@javadbolouri72
ثبت پرسش جدید

پاسخ‌ها

4
میلاد هدایت پور
میلاد هدایت پور
@miladparsi1070

تخصص: در حال پیشرفت

بهترین پاسخ

ابتدایی ترین راهش اینه که if بزاری اگه ادمین بود یه ولیدیشن اجرا شه و اگه نبود یه ولیدیشن دیگه اجرا شه

 if ($user->type) {
            $validator = $this->validate($request, [
                //admin-validation
            ]);
        } else {
            $validator = $this->validate($request, [
                //another-validation
            ]);
        }

شاید راه دیگه ای هم باشه که دوستان بلد باشن

JBolouri
JBolouri
@javadbolouri72
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

  • هر وقت توی کدهاتون مجبور شدید برای انتخاب لاجیک از switch استفاده کنید
  • یا مجبور شدید نوع یک آبجکت رو با instanceof چک کنید
  • و در بعضی موارد اگر از if استفاده کردید تا نوع رو چک کنید.

۹۰٪ مواقع نشانه این هست: که میتونید از پلی مورفیسم (Polymorphism) استفاده کنید
مثلا در اینجا میتونی یک ValidatorInterface بسازی
و ۲ کلاس UserValidator و AdminValidator هم بسازی که از اینترفیس تبعیت می‌کنند.

مزایای این کار:

  • برای سیستم مهم نیست که چه نوع Validation باید اعمال بشه.
  • سیستم فقط میدونه که باید از نوعی از Validation استفاده کنه.
  • در زمان اجرا میتونی الگوریتم رو تغییر بدی.
  • Decoupling رعایت شده و بخش های اپلیکیشن به هم اتکا ندارند.
  • قاعده open-closed principle از قوانین SOLID هم رعایت میشه (بعدا میتونی بدون تغییر کدها، ویژگی های جدید اضافه کنی)

موفق باشی

شاید پاسخ شما همین‌جا باشد

JBolouri
JBolouri
@javadbolouri72

@ali.bayat

آها ممنون بابت راهنماییتون 🌷

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام