Abdelrahman Mostafa10 نشر 21 ديسمبر 2023 أرسل تقرير نشر 21 ديسمبر 2023 أثناء متابعتي لأحد الشروحات تم ذكر أنه يتم استخدام Dependency Injection و Route Model Binding في الجزء التالي من الكود: public function show(Project $project) { } كيف يتم التعرف على البروجكت بالرغم من قيامه بتمرير الـ id دون استخدام find() الأمر مربك بالنسبة لي، أرجو التوضيح مع الأمثلة ومتى يتم استخدام ذلك 1 اقتباس
0 Khaled Osama3 نشر 22 ديسمبر 2023 أرسل تقرير نشر 22 ديسمبر 2023 لابد اولا من فهم ما يلي: - Dependency Injection: هنا يتم حقن تابع الـ Project كائن داخل الوظيفة، بدلاً من اننا نقوم بإنشائه داخل الوظيفة. - Route Model Binding: عندما نضع معلمة من نوع Model كـ Project في المسار، فإن Laravel يقوم تلقائياً بالبحث عن السجل المطابق للـ id وتمريره. أي أن لارافيل يقوم بالبحث بنفسه وتمرير النموذج المطلوب دون أن نحتاج للقيام به والافتراضي لها هو الid . مثال: Route::get('/project/{project}', function (Project $project) { return $project->name; }); هنا project سيحتوي مباشرة على البيانات بدون الحاجة لاستدعاء find. في المقابل لو استخدمنا: Route::get('/project/{id}', function ($id) { return Project::find($id)->name; }); فهنا سنقوم بالبحث يدويا. تستخدم هذه الطريقة عندما نريد أن يقوم لارافيل بالبحث تلقائيا دون الحاجة للقيام به يدويا. ويمكننا عمل Route Model Binding عن طريق اي حقل يكون unique, فهكذا يمكننا اخبار لارافل ان تفعل ال Route Model Binding لحقل ال slug Route::get('/projects/{project:slug}', 'ProjectController@show'); public function show(Project $project) { // يمكنك الوصول إلى حقول النموذج هنا باستخدام الـ slug $projectName = $project->name; $projectDescription = $project->description; // ... } اقتباس
السؤال
Abdelrahman Mostafa10
أثناء متابعتي لأحد الشروحات تم ذكر أنه يتم استخدام Dependency Injection و Route Model Binding في الجزء التالي من الكود:
كيف يتم التعرف على البروجكت بالرغم من قيامه بتمرير الـ id دون استخدام find() الأمر مربك بالنسبة لي، أرجو التوضيح مع الأمثلة ومتى يتم استخدام ذلك
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.