Utworzyłem encję niestandardową za pomocą interfejsu API jednostki, która ma określone właściwości zdefiniowane hook_schema()
i zadeklarowane w entityPropertyInfo()
klasie rozszerzającej EntityDefaultMetadataController
.
Jak na razie dobrze.
Teraz chciałbym, aby użytkownicy mogli dostosować, czy i jak te właściwości będą wyświetlane podczas przeglądania encji, więc zaimplementowałem hook_field_extra_fields () i je zadeklarowałem.
Następnie w moim kontrolerze, który rozszerza EntityAPIController
, dodałem właściwości do tablicy $ content w buildContent()
as, jak tutaj opisano .
W rzeczywistości działa całkiem dobrze, a właściwości są renderowane i szanują ustawienia kolejności i widoczności w „Zarządzaj wyświetlaniem”.
Wydaje mi się jednak, że nie mogę wymyślić, jak dodać ustawienia w Zarządzaj wyświetlaniem, aby dostosować pozycjonowanie etykiet ( inline/above/hidden
), a co ważniejsze, jak określić niestandardowe formatery dla tych właściwości.
Jakieś wskazówki?
Odpowiedzi:
Możesz utworzyć moduł zapewniający
property
pole typu „ ”. Zapisz właściwość do sformatowania jako ustawienie instancji, a następnie zastosuj do niej formatyzator. Powinno to być stosunkowo proste. Moduł relacji ma atrapę modułu polowego, który może pomóc w ustaleniu, jak to zakodować.źródło
jak widać
field_ui_display_overview_form
namodules/field_ui/field_ui.admin.inc
stronieDisplay setting
wypełni się$instances
i$extra_fields
:w tej funkcji są dwie pętle, które tworzą stronę:
i
i tylko w pierwszej pętli, która iteruje w polach, są opcje dla
label
iformatter
więc jeśli chcesz tę funkcjonalność w swoich właściwościach (jak powiedział @Clive):
źródło