امروز دربارهی این صحبت میکنیم که چطور میتوان پارامترهای Route را داخل Middleware در Laravel استفاده کرد؛ کاری که احتمالاً در روند توسعهی پروژه با آن روبهرو میشوید.
Middleware چیست؟
یک Middleware در واقع درخواست (Request) اپلیکیشن را در بر میگیرد.
به این شکل تصورش کنید:
وقتی یک درخواست به اپلیکیشن شما ارسال میشود، کدی وجود دارد که آن درخواست را پردازش میکند. اما اگر بخواهید قبل یا بعد از اجرای آن کد کاری انجام شود، باید از Middleware استفاده کنید.
لاراول بهصورت پیشفرض چند Middleware داخلی دارد، مثل:
-
Maintenance mode
-
Authentication
-
محافظت CSRF
که همهی آنها در مسیر زیر قرار دارند:
پارامترهای Route در Laravel
Routeهای لاراول در فایل زیر قرار دارند:
هر Route معمولاً شامل:
-
مسیر URL
-
یک تابع Handler (یا متد Controller)
مثال Route با تابع ساده:
مثال Route با Controller:
ارسال پارامتر در Route
برای ارسال پارامتر در Route از آکولاد {} استفاده میکنیم.
مثلاً:
طبق قرارداد، متد Controller پارامترها را با همان نام دریافت میکند.
دسترسی به پارامتر Route داخل Middleware
اما دسترسی به پارامترها در Middleware کمی متفاوت است.
ابتدا یک Middleware جدید میسازیم:
فایل زیر ساخته میشود:
روش اول: استفاده از route() روی Request
میتوان پارامتر را اینطور دریافت کرد:
در متد handle:
اضافه کردن Middleware به Route
ثبت Middleware در Kernel
در فایل:
حالا میتوانید بنویسید:
اجرای پروژه
باز کردن:
پارامتر scotch نمایش داده میشود.
روش دوم: دریافت همه پارامترها
اگر Route چند پارامتر داشته باشد:
میتوان همه را بهصورت آرایه گرفت:
در Middleware:
باز کردن:
پارامترها بهصورت آرایه نمایش داده میشوند.
چرا باید پارامتر Route را در Middleware بخوانیم؟
فرض کنید Route زیر برای پروفایل کاربران است:
مثلاً:
اما سایت شما مسیرهایی مثل:
-
faq
-
help
-
support
هم دارد.
روش معمول این است که این مسیرها را قبل از Route پروفایل تعریف کنید:
اما با Middleware میتوان این کار را تمیزتر انجام داد.
استفاده عملی از Middleware
Route:
Middleware:
در اینجا:
-
بررسی میکنیم پارامتر در آرایه وجود دارد یا نه
-
اگر وجود داشت، View مربوطه نمایش داده میشود
اگر بعدها کلمات دیگری اضافه شد، فقط کافی است آنها را به آرایه اضافه کنیم.
از همراهی شما با پارمین کلود سپاسگزاریم.
نظرات کاربران