تکنولوژی نوین اینترنتی
بزن بریم سراغ یکی از خوشگلترین و کاربردیترین امکانات لاراول:
این قابلیت باعث میشه بهجای گرفتن id
از URL و بعد دستی پیدا کردن مدل، خود لاراول بهصورت خودکار مدل مربوطه رو از دیتابیس پیدا کنه و به اکشن کنترلر بفرسته.
مثال:
در کنترلر:
لاراول خودش Post::findOrFail($id)
رو اجرا میکنه! ✨
{post}
با نام متغیر $post
مطابقت داره و مدل Post
به اون bind میشه.
وقتی مینویسی {post}
، لاراول میفهمه که باید از مدل Post
استفاده کنه و مقدار id
در URL رو تو جدول posts
جستجو کنه.
وقتی میخوای بر اساس فیلد دیگهای غیر از id
مدل رو بیاری (مثلاً slug
) ⬇️
RouteServiceProvider
حالا لاراول به جای id
، دنبال پستی با slug = $value
میگرده.
getRouteKeyName()
در مدلراه بهتر برای Binding با slug
:
الان بدون نیاز به تغییر در RouteServiceProvider:
و کنترلر:
لاراول خودش بهصورت خودکار 404 برمیگردونه اگر چیزی پیدا نکنه.
نیازی به findOrFail
نداری.
البته تو این حالت باید اطمینان داشته باشی که پست واقعاً متعلق به اون یوزر هست.
ویژگی | مزیت |
---|---|
کوتاهتر شدن کد کنترلر | حذف findOrFail |
امنیت | اگر پیدا نشه => 404 |
قابلیت استفاده با slug و uuid | با getRouteKeyName() |
ترکیب عالی با Resourceها | خروجی زیباتر برای API |
اگه خواستی یه مثال واقعی با مدلهای Post
, Category
, User
و slug
بسازم و چند تا route حرفهای بنویسم، فقط بگو 😉