JavaScript is not enabled!...Please enable javascript in your browser

جافا سكريبت غير ممكن! ... الرجاء تفعيل الجافا سكريبت في متصفحك.

Accueil

كيف صممت نظام إعدادات ديناميكي لتطبيق Laravel بدون تعديل الكود – تجربة عملية

 


✍️ مقدمة:

أغلب المطورين يعتمدون على ملفات .env أو ثوابت ثابتة داخل الكود لإدارة إعدادات التطبيقات.
لكن ماذا لو أراد العميل لاحقًا تغيير إعداد معين من لوحة التحكم بدون الحاجة إلى مطور؟

في هذا المقال، أشاركك كيف أنشأت نظام إعدادات ديناميكي قابل للتعديل من لوحة التحكم في Laravel، دون المساس بالكود أو إعادة نشر التطبيق.

🎯 الفكرة:

أنشأنا جدولًا خاصًا لتخزين الإعدادات، مثل:

  • اسم الموقع

  • البريد الرسمي

  • عنوان الدعم الفني

  • رسالة تنبيه تظهر في الواجهة

  • أي إعداد آخر يريده العميل

ثم قمنا بتحميل هذه الإعدادات تلقائيًا عند بدء التشغيل وجعلها متاحة في جميع أجزاء المشروع.

🧱 قاعدة البيانات:

جدول settings

Schema::create('settings', function (Blueprint $table) {
    $table->id();
    $table->string('key')->unique();
    $table->text('value')->nullable();
    $table->timestamps();
});

أمثلة على البيانات:

(key) (value)
(site_name) (مدونتي)
(support_email) (support@example.com)
(show_announcement) (true)
(announcement_text) (سيتم إيقاف الموقع للصيانة غدًا)

🧠 تحميل الإعدادات تلقائيًا:

في ملف AppServiceProvider.php داخل boot():

use App\Models\Setting;

public function boot()
{
    config([
        'app.settings' => Setting::pluck('value', 'key')->toArray(),
    ]);
}

الآن، يمكنك الوصول لأي إعداد بسهولة:

config('app.settings.site_name')

🛠️ واجهة الإدارة:

أنشأنا لوحة بسيطة داخل لوحة التحكم لإدارة هذه الإعدادات.

نموذج التحكم:

public function update(Request $request)
{
    foreach ($request->all() as $key => $value) {
        Setting::updateOrCreate(['key' => $key], ['value' => $value]);
    }

    return back()->with('success', 'تم حفظ الإعدادات');
}

في Blade:

<input type="text" name="site_name" value="{{ config('app.settings.site_name') }}">

📌 المميزات:

(الميزة) (الفائدة)
(مرونة التعديل) (يمكن لأي مسؤول نظام تعديل الإعدادات بسهولة)
(لا حاجة لتعديل الكود) (كل شيء ديناميكي من قاعدة البيانات)
(قابل للتوسعة المستقبلية) (يمكن إضافة أي إعداد جديد من الواجهة مباشرة)

💡 تحسينات مستقبلية:

  • كاش للإعدادات لتسريع الأداء

  • إضافة أنواع للحقول (نص، اختيار، بريد إلكتروني...)

  • دعم تعدد اللغات في الإعدادات

✅ الخلاصة:

بناء نظام إعدادات ديناميكي داخل Laravel يمنحك مرونة عالية ويقلل من الاعتماد على المطور في كل تغيير بسيط.
إذا كنت تطور تطبيقات للغير، فهذه ميزة تضيف قيمة عالية لمشروعك.

NomE-mailMessage