Wigandt Technology

Directus Polymorphic Reference

Directus interface и display bundle для polymorphic references: пара collection и ID превращается в навигационные ссылки по шаблону.

Обзор проекта

Directus Polymorphic Reference моделирует гибкие связи, где запись указывает на разные типы сущностей через target collection и target ID. Паттерн похож на polymorphic relations из фреймворков вроде Laravel и становится доступным в Directus через interface и display bundle.

Extension хранит target collection и target ID в отдельных полях, но показывает их в интерфейсе как одну понятную reference. Редактор сначала выбирает тип сущности, затем подходящую запись.

Для списков и detail views вывод можно настроить через templates. Polymorphic references отображаются не как сырые IDs, а как читаемые навигационные ссылки.

Что покрывает extension

Collection Select interface для type field polymorphic reference

Polymorphic Reference interface для выбора target record

Display component со ссылками в соответствующую Directus collection

Template-based labels для каждой target collection в читаемых list views

Настройка и использование

  1. 1Настроить одно поле для target type как Collection Select.
  2. 2Настроить одно поле для target ID как Polymorphic Reference.
  3. 3При необходимости задать templates и link behavior для каждой collection.

Скриншоты

Data model polymorphic Directus reference
Data model с type field и target ID.
Setup flow расширения Polymorphic Reference
Flow для collection selection, reference field и display.
Field states Directus Polymorphic Reference
Field states для выбора, отображения и пустых references.
DirectusRelationsnpm