نظرة عامة
استخدمdefineField() لإضافة حقل إلى كائن لا تملكه — كائن Twenty قياسي مثل Person أو Company، أو كائن يتم توفيره بواسطة تطبيق آخر مُثبَّت. على خلاف الحقول المضمّنة داخل defineObject، تتطلّب الحقول المستقلة objectUniversalIdentifier لتحديد الكائن الذي تقوم بتوسيعه.
src/fields/company-loyalty-tier.field.ts
النقاط الرئيسية
-
objectUniversalIdentifierيحدّد الكائن الهدف. بالنسبة لكائنات Twenty القياسية، استورد الثابت منtwenty-sdk: -
عند تعريف الحقول بشكل مضمّن داخل
defineObject()، لا تحتاج إلىobjectUniversalIdentifier— إذ يُورَّث من الكائن الأب. -
defineField()هي الطريقة الوحيدة لإضافة حقول إلى كائنات لم تُنشئها باستخدامdefineObject(). -
يتبع
SELECTوMULTI_SELECTقواعد التحقق من الخيارات والألوان نفسها المتبعة في الحقول المضمنة. يكون اللون المحذوف أو الفارغ افتراضيًاgray؛ وتُرفض الألوان غير المدعومة. -
موقع الملف متروك لك. المتعارف عليه هو
src/fields/\<name>.field.ts، لكن واجهة CLI تكتشف الحقول في أي مكان داخلsrc/. -
يمكن تعيين
isSearchable: trueعلىdefineField()مع القيود نفسها المطبقة على الحقول المضمنة (كائن هدف قابل للبحث، ونوع حقل متوافق مع النص)، بحيث تصبح سجلات كائن الهدف قابلة للعثور عليها من خلال قيم حقلك في البحث بالنص الكامل. -
يمكن ضبط
isAuditLogged: falseعلىdefineField()لإبقاء تغييرات الحقل خارج المخطط الزمني لسجل الهدف، وهو أمر مهم للغاية للحقول التي يعيد تطبيقك كتابتها وفق جدول زمني. -
لإضافة علامة تبويب إلى تخطيط صفحة قياسي (مثل صفحة تفاصيل Task أو Company)، استخدم
definePageLayoutTabمعSTANDARD_PAGE_LAYOUT_UNIVERSAL_IDENTIFIERSمنtwenty-sdk/define.
إضافة علاقة إلى كائن موجود
لإضافة حقل علاقة (مثل ربط الكائن المخصّص بكائن قياسيPerson)، استخدم defineField() مع FieldType.RELATION. النمط هو نفسه الخاص بالعلاقات المضمّنة لكن مع تعيين objectUniversalIdentifier صراحةً. اطّلع على Relations للنمط ثنائي الاتجاه.