أرونا ابداعتكم وافكاركم في بناء الحقول الديناميكية

السلام عليكم ورحمة الله وبركاته

كلنا لابد ان نواجه في مشاريعنا متطلبات منها استخدام الحقول (ادخال اسم المستخدم ,كلمة المرور,, الخ)

ولكن قد تأتينا مشاريع تتطلب استخدام الكثير من الحقول مثلاً طُلب مني مؤخراً تطوير برنامج يعتمد على اظهار ٤٨ نموذج من نماذج الادخال وكل نموذج به على الاقل ١٠ اسئلة مما يعني ٤٨٠ حقول ومتنوعه! منها الاختيار من متعدد وبعضها كتابي .. الخ.

طبعاً لن اقوم ببرمجة ٤٨ نموذج داخل التطبيق!

فما وجدت امامي حل الا استخدام كلاس يقوم بتوليد الحقول بطريقة ديناميكية بناءً على ملف Json مخزن به الاسئلة وطريقة التعامل معها

فكرت لماذا لا اشارك اخواني في ارابيا ونستفيد من بعضنا البعض

ليكتب كل منكم ماذا فعل لحل هذه المشكلة او ماذا يقترح.

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

لا ارى ان Json فكرة سديدة الا اذا كنت تتتعامل مع AJAX من خلال JavaScript وتقوم ببناء النموذج على متصفح العميل

لماذا لسيت فكرة سديدة لأنك تحتاج الى جلب ملف او المصفوفة Json مما يسبب لود وتاخير في التنفيذ اضافة ان حجمها كبير

وهناك مشكلة اخرى ان عدد النماذج كثير وعدد الحقول كثيره مما يزيد من حجم array ويسبب بطئ في التنفيذ

هناك حل مؤقت هو تقسيم المصفوفة على عدد مصفوفات صغيره بحيث يكون استدعائها اسرع من المصفوفة الكبيرة

وانصحك بستخدام الكاش فهو حل جيد لبناء النموذج والصفحة ولكنك سوف تعاني عند الادخال سوف يأخذ بعض الوقت لكن انشاء الله مع التقسيم راح يقل معدل وقت التنفيذ

*ولا تنسى تفريغ الذاكرة وتدمير المصفوفات بعد كل استدعاء كي لا تسبب لك بعض المشاكل

انا اقوم بتخزين Json على الذاكرة الداخلية القادة مع التطبيق بالنسبة للاندرويد والايفون بالتالي تحميلها يكون كما تفضلت كمصفوفة وايضاً اجعلها متفرعة لسهولة التحميل وصدقني النتائج كانت سريعة بالنسبة لفورم من ٢٠ سؤال ولاتستطيع ملاحظة اي تأخير.

لم اقم بتجربة الكاش ولكن ساعطيه محاولة على مايبدو

شكراً للمشاركة

عليكم السلام ورحمة الله وبركاته

كنت أعمل على تنفيذ نفس الفكرة اليوم بغرض التعامل مع إطار العمل laravel, وقمت بتنفيذها كالأتي :

إستخدمت قواعد البيانات لكن يمكن تنفيذ نفس الفكرة عن طريق الملفات و json, والتطبيق الذي أنفذه يحتوي موضوعات وتصنيفات عامة مثل (مقالات / أخبار / فيديو) والمطلوب امكانية تحديد حقول مختلفة لكل تصنيف

أنشأت 3 جداول

  • التصنيفات (categories)

-- id

-- name

-- fields > حقل يحتوي على الحقول بصيغة json سوف أضع مثال بالأسفل

  • الموضوعات (posts)

-- id

-- user_id

-- category_id

  • محتوي الحقول (fields_data)

-- id

-- name

-- value

-- category_id

-- post_id

مثال على محتوي الحقل fields من جدول التصنيفات

{
    post_title : {
        name : 'عنوان الموضوع',
        type : 'text',
        required : 1
    },
    post_image : {
        name : 'صورة الموضوع',
        type : 'file',
        allowed: 'jpg,gif,png'
        required : 0
    },
    post_body : {
        name : 'محتوي الموضوع',
        type : 'long_text',
        required : 1
    }
}

عند إضافة قسم جديد يتم تحديد الحقول بالطريقة الأتية :

بهذه الطريقة في صفحة إضافة موضوع يتم إظهار الحقول الخاصة بالقسم المطلوب الإضافة فيه مثال : عنوان / صورة / محتوي الموضوع

وفي صفحة عرض الموضوع يتم الإستعلام عن محتوايات الحقول المرتبطة بالموضع

فكرة جميلة واستخدام جميل ولكن الى تخشى ان يكون بطيء بعض الشيء.

بحيث ان الحقول في كل مرة تطلب من قاعدة البيانات فتكون ثقل على الخادم ؟

الإستعلام من جدول واحد لا أعتقد يمثل بطئ يذكر مقارنه بطرق أخري مثل طريقة Drupal مثلا فهي تنشئ لكل حقل جدول جديد في قاعدة البيانات

وفي حالة حدوث بطئ يمكن حلها بإنشاء حقل cache في جدول الموضوعات يحتوي بيانات الحقول كـjson

شكراً لك لقد افدتني بالكثير

وفقك الله ويسر امرك