تالار گفتمان nCIS.ir

نسخه‌ی کامل: Route Model Binding
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
در مورد این قابلیت جدید لاراول یه توضیحاتی میخواستم. دوستان اطلاعی در این مورد دارن؟

Route Model Binding

و همینطور
Binding A Parameter To A Model
ببینید تو route هایی که تعریف می کنیم برای تعریف پارامترها نام پارامتر رو داخل آکولاد قرار میدیم و بعد تو اکشن یا همون routes.php داخل closure به صورت متغیری به همون نام بهش دسترسی داریم مثال زیر رو نگاه کن :

Route::get('user/{id}', function($id){
	$user = AppUser::find($id);
	return $user->name;
});
وقتی کاربر آدرس http://localhost:8000/user/1 رو درخواست کنه مقدار 1 تو پارامتر id قرار می گیره و می تونیم با استفاده از اون اطلاعات موردنظرمون رو از مدل بدست بیاریم

حالا با روش model binding این دستور رو داخل کلاس RouteServiceProvider تو مسیر AppProviders این دستور را داخل متد boot می نویسید:
$router->model('id', 'AppUser');
همینطور که می بینی اسم پارامتر رو به متد model میدیم و بعدش هم نام مدلمون رو با namespace اش بهش میدیم

حالا اگه همون آدرس http://localhost:8000/user/1 رو درخواست کنید خودش میره از مدل رکوردی id اون برابر 1 هست رو بازیابی میکنه:
Route::get('user/{id}', function(AppUser $user){
	return $user->name;
});
فقط باید یک آبجکت از مدل رو بهش پاس بدیم و همینطور که می بینی کد خلاصه تر شده