الانتقال إلى المحتوى الرئيسي

نظرة عامة

استخدم 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 للنمط ثنائي الاتجاه.