كيفية التعامل الأفضل مع القيم الافتراضية للحقول المخصصة وسجلات إعدادات الفئات

بعض السياق

السبب في حدوث ذلك هو

  1. يقوم المكون الإضافي activity pub بتعيين بعض القيم الافتراضية لتلك الحقول على العميل (هنا).

  2. يتم تسجيل جميع تغييرات الحقول المخصصة للفئة كتغييرات في إعدادات الفئة في النواة (هنا).

“1” (تعيين القيم الافتراضية للحقول المخصصة للفئة على العميل) يبدو أنه أفضل طريقة للعمل مع خط أنابيب الحقول المخصصة للفئة في الوقت الحالي حيث سيقوم إجراء update للفئة بحفظها تلقائيًا، وتريد التأكد من تعيين القيم الافتراضية إذا كانت الحقول المخصصة مترابطة (كما هي في المكون الإضافي AP).

لاحظ أنه لا يمكن حاليًا لمكون إضافي تسلسل الحقول المخصصة بشكل انتقائي إلى الخادم (بدون تعديل).

بالنظر إلى ما سبق، أتساءل عما إذا كان “2” منطقيًا؟ كما أشار ديفيد، بالنظر إلى التكوين الحالي لخط الأنابيب، فإن التغيير في حقل مخصص لا يشير بالضرورة إلى تغيير في تكوين إعدادات الفئة (أي الانتقال من nil إلى القيمة الافتراضية).

فضولي لسماع آراء الآخرين حول هذا. ربما فاتني طريقة أفضل للتعامل مع القيم الافتراضية للحقول المخصصة للفئة.

3 إعجابات

@david فقط أقوم بتذكيرك بهذه المسألة مرة أخرى. ما هو رأيك المبدئي في هذا؟ إذا كنت تعتقد أن هناك حاجة لتغيير في كيفية حفظ الحقول المخصصة للفئات في النواة، يمكنني تجربة ذلك. أو ربما سأرى ما إذا كان بإمكاني إيجاد طريقة جديدة لتعيين القيم الافتراضية للحقول المخصصة. أو ربما نترك الأمر في الوقت الحالي؟

نعم هذا صعب. أفترض أن معظم الإضافات لا تواجه هذا لأن “الافتراضي” الخاص بها لإعداد الفئة هو قيمة فارغة.

هل كانت لديك فكرة لتغيير واجهة برمجة التطبيقات الأساسية يمكن أن يساعد في تحسين الوضع؟

غير مختبرة تمامًا، لكن أعتقد أنه قد يكون بإمكاننا تحقيق شيء ما الآن باستخدام حقل إدخال HTML خام (لاحظ حرف input الصغير بدلاً من المكون \u003cInput المرتبط ثنائي الاتجاه في Ember).

<input
  value={{or category.custom_fields.my_field "default value"}}
  {{on "change" this.updateMyFieldValue}}
/>

مع هذه الاستراتيجية، لدينا تحكم في كيفية قراءة القيم وكتابتها إلى مثيل النموذج. لذا، إذا تم تعيين قيمة إلى الافتراضي في واجهة المستخدم، فيمكننا كتابتها كـ “null” في الحقول المخصصة:

@action
updateMyFieldValue(event){
  let newValue = event.target.value;
  if(newValue === "default value"){
    newValue = null;
  }

  this.category.set("custom_fields.my_field", newValue);
}

(ثم ستقوم بإزالة تكوين القيمة الافتراضية الذي وصفته في (1) من المنشور الأصلي)

إعجاب واحد (1)