Як реалізувати формати для полів для властивостей сутності


16

Я створив спеціальну сутність за допомогою API Entity, який має певні властивості, визначені hook_schema()та оголошені в entityPropertyInfo()класі, що розширюється EntityDefaultMetadataController.

Все йде нормально.

Тепер я хотів би, щоб користувачі могли налаштувати, як і як ці властивості відображатимуться під час перегляду об'єктів, тому я реалізував imka_field_extra_fields () та оголосив їх.

Потім у своєму контролері, який розширюється, EntityAPIControllerя додав властивості до масиву $ content у buildContent()як, викладеному тут .

Це насправді працює досить добре, а властивості відображаються та дотримуються налаштувань порядку та видимості в "Керувати дисплеєм".

Однак я не можу зрозуміти, як додати налаштування в Manage Display для налаштування позиціонування міток ( inline/above/hidden) і, що ще важливіше, як вказати спеціальні формати для цих властивостей.

Будь-які підказки?


1
Чи підтримують властивості навіть формати? Оскільки в "Вузлі" немає пункту "Заголовок" у розділі "Керування дисплеєм", моєю першою здогадкою було б ні. Хоча +1 за гарне запитання.
Летаріон

Властивості сутності не підтримують формати, ні. Вам потрібно було б реалізувати весь цей механізм самостійно
Клайв

Я побоювався, що це так
Алекс Вебер,

Відповіді:


7

Ви можете створити модуль, що забезпечує propertyтип поля. Збережіть властивість, яке слід відформатувати, як налаштування екземпляра, а потім застосуйте до цього формат. Він повинен бути відносно прямим.Ставлення модуль має імітатор поля , які могли б допомогти вам в з'ясувати , як закодувати це.


1
Модуль власності поля Entity є ще однією відправною точкою для цього підходу.
andrewmacpherson

1

як ви можете бачити field_ui_display_overview_formна modules/field_ui/field_ui.admin.incсторінці Display settingнаповнить $instancesі$extra_fields :

$instances = field_info_instances($entity_type, $bundle);
$field_types = field_info_field_types();
$extra_fields = field_info_extra_fields($entity_type, $bundle, 'display');

у цій функції є дві петлі, які створюють сторінку:

foreach ($instances as $name => $instance) {
   ...
}

і

foreach ($extra_fields as $name => $extra_field) {
   ...
}

і лише в першому циклі, який повторюється в полях, є варіанти label іformatter

тому якщо ви хочете, щоб ця функціональність була у ваших властивостях (як сказав @Clive):

Вам потрібно було б реалізувати весь цей механізм самостійно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.