في Laravel، يمكنك استخدام ميزة التوجيهات (Laravel Observers) لإنشاء دوال تُستدعى تلقائيًا قبل أو بعد عمليات الحفظ أو التحديث على النموذج. يُمكنك القيام بذلك عبر الخطوات التالية:
- إنشاء المراقب (Observer): يجب عليك أولاً إنشاء المراقب الذي يحتوي على الدوال التي تريد تنفيذها قبل أو بعد عمليات الحفظ أو التحديث. يُمكنك إنشاء ملف للمراقب في مجلد
app/Observers
.
phpphp artisan make:observer UserObserver --model=User
سيُنشأ ملف UserObserver.php
في المجلد المحدد، وسيحتوي على دوال created
, updated
, deleted
, وغيرها التي يمكنك استخدامها.
-
تسجيل المراقب:
- يجب تسجيل المراقب في ملف
app/Providers/AppServiceProvider.php
في دالةboot()
:
phpuse App\Models\User; use App\Observers\UserObserver; public function boot() { User::observe(UserObserver::class); }
- يجب تسجيل المراقب في ملف
-
تنفيذ الدوال:
- يمكنك الآن تنفيذ الدوال التي تريدها في المراقب. على سبيل المثال، إذا أردت تنفيذ دالة بعد عملية الحفظ، يمكنك استخدام دالة
saved
:
phppublic function saved(User $user) { // تنفيذ الكود الذي تريده بعد عملية الحفظ }
- كذلك، يمكنك استخدام دالة
saving
لتنفيذ كود قبل عملية الحفظ.
- يمكنك الآن تنفيذ الدوال التي تريدها في المراقب. على سبيل المثال، إذا أردت تنفيذ دالة بعد عملية الحفظ، يمكنك استخدام دالة
باستخدام هذه الخطوات، يمكنك إنشاء وتنفيذ الدوال التي تريدها قبل أو بعد عمليات الحفظ أو التحديث في Laravel.
المزيد من المعلومات
بالطبع! في Laravel، يُستخدم مفهوم “المراقبين” (Observers) لتنفيذ السلوك الخاص بالنماذج (Models) قبل أو بعد عمليات معينة مثل الحفظ (saving)، التحديث (updating)، الحذف (deleting)، وغيرها. هذا يُسهل فصل السلوك عن الكود الرئيسي للنموذج، مما يجعل الكود أكثر نظافة وسهولة في الصيانة.
لتفعيل المراقبين، يجب أولاً إنشاء المراقب نفسه باستخدام الأمر make:observer
كما ذكرت سابقًا. ثم، يُحدد المراقب الموديل الذي يجب مراقبته. يمكنك إضافة عدة دوال إلى المراقب، مثل created
, updated
, deleted
، ويمكنك أيضًا إنشاء دوال مخصصة تُنفذ قبل أو بعد عمليات معينة.
على سبيل المثال، إذا أردت تنفيذ دالة بعد عملية الحفظ، يمكنك استخدام دالة saved
كما ذكرت. وإذا كنت ترغب في تنفيذ دالة قبل عملية الحفظ، يمكنك استخدام دالة saving
، وهكذا لبقية العمليات.
تكون الفائدة من هذا النهج واضحة عندما يكون لديك سلوك متكرر يجب تنفيذه في العديد من النماذج. بدلاً من تكرار الكود في كل نموذج، يمكنك ببساطة إنشاء مراقب واحد واستخدامه مع جميع النماذج المطلوبة، مما يجعل الشفرة أكثر صيانة وإدارة.