Skip to main content
استخدم defineField() لإضافة حقل إلى كائن لا تملكه — كائن Twenty قياسي مثل Person أو Company، أو كائن يتم توفيره بواسطة تطبيق آخر مُثبَّت. على خلاف الحقول المضمّنة داخل defineObject، تتطلّب الحقول المستقلة objectUniversalIdentifier لتحديد الكائن الذي تقوم بتوسيعه.
src/fields/company-loyalty-tier.field.ts

النقاط الرئيسية

  • objectUniversalIdentifier يحدّد الكائن الهدف. بالنسبة لكائنات Twenty القياسية، استورد الثابت من twenty-sdk:
  • عند تعريف الحقول بشكل مضمّن داخل defineObject()، لا تحتاج إلى objectUniversalIdentifier — إذ يُورَّث من الكائن الأب.
  • defineField() هي الطريقة الوحيدة لإضافة حقول إلى كائنات لم تُنشئها باستخدام defineObject().
  • موقع الملف متروك لك. المتعارف عليه هو src/fields/\<name>.field.ts، لكن حزمة SDK تكتشف الحقول في أي مكان داخل src/.
  • يمكن أيضًا تعيين writability على مستوى الحقل: يقتصر السماح بالكتابة في حالة MetadataWritability.APPLICATION على دوال منطق تطبيقك نفسها، بينما يُخصَّص MetadataWritability.SYSTEM للبيانات المُدارة بواسطة المنصة. لا يمكن أن يكون مستوى قابلية الكتابة للحقل إلا أكثر تقييدًا من مستوى الكائن الذي ينتمي إليه، ولا تتأثر عمليات القراءة بذلك. راجع Objects للاطّلاع على الدلالات الكاملة.
  • لإضافة علامة تبويب إلى تخطيط صفحة قياسي (مثل صفحة تفاصيل Task أو Company)، استخدم definePageLayoutTab مع STANDARD_PAGE_LAYOUT_UNIVERSAL_IDENTIFIERS من twenty-sdk/define.

إضافة علاقة إلى كائن موجود

لإضافة حقل علاقة (مثل ربط الكائن المخصّص بكائن قياسي Person)، استخدم defineField() مع FieldType.RELATION. النمط هو نفسه الخاص بالعلاقات المضمّنة لكن مع تعيين objectUniversalIdentifier صراحةً. اطّلع على Relations للنمط ثنائي الاتجاه.