تکنولوژی نوین اینترنتی
بزن بریم سراغ یکی از خوشگلترین و کاربردیترین امکانات لاراول:
این قابلیت باعث میشه بهجای گرفتن 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 حرفهای بنویسم، فقط بگو 😉