Cómo implementar formateadores de campo para propiedades de entidad


16

Creé una entidad personalizada usando Entity API que tiene ciertas propiedades definidas hook_schema()y también declaradas en entityPropertyInfo()una clase que se extiende EntityDefaultMetadataController.

Hasta aquí todo bien.

Ahora me gustaría que los usuarios puedan personalizar si estas propiedades se muestran y cómo se muestran al ver las entidades, así que implementé hook_field_extra_fields () y las declaró.

Luego, en mi controlador que se extiende EntityAPIController, agregué las propiedades a la matriz $ content buildContent()como se describe aquí .

Realmente funciona bastante bien y las propiedades se representan y respetan el orden y la configuración de visibilidad en "Administrar pantalla".

Sin embargo, parece que no puedo entender cómo agregar configuraciones en Administrar pantalla para personalizar el posicionamiento de la etiqueta ( inline/above/hidden) y, lo que es más importante, cómo especificar formateadores personalizados para estas propiedades.

¿Alguna pista?


1
¿Las propiedades incluso admiten formateadores? Dado que "Nodo" no tiene "Título" en "Administrar pantalla", mi primera suposición sería no. +1 para una buena pregunta sin embargo.
— Letharion

Las propiedades de la entidad no admiten formateadores, no. Debería implementar todo ese mecanismo usted mismo
— Clive

Temía que ese fuera el caso
— Alex Weber

Respuestas:


7

Puede crear un módulo que proporcione un " property" tipo de campo. Almacene la propiedad que se formateará como una configuración de instancia y luego aplique un formateador a eso. Debería ser relativamente sencillo. El módulo de relación tiene un módulo de campo ficticio que podría ayudarlo a descubrir cómo codificar esto.


1
El módulo Entity Property Field es otro punto de partida para este enfoque.
— andrewmacpherson

1

como se puede ver en field_ui_display_overview_formen modules/field_ui/field_ui.admin.incla página Display settingllenará con $instancesy $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');

En esta función hay dos bucles que crean la página:

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

y

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

y solo en el primer ciclo que itera en los campos hay opciones para labelyformatter

así que si quieres esta funcionalidad en tus propiedades (como dijo @Clive):

Tendría que implementar todo ese mecanismo usted mismo

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.