Read-only Field Widget
Proporciona un widget de campo que muestra los valores de campo en formato de solo lectura utilizando formateadores de campo en los formularios de edición de entidades.
readonly_field_widget
Install
composer require 'drupal/readonly_field_widget:^2.1'
Overview
El módulo Read-only Field Widget proporciona un widget de campo que reemplaza las entradas de formulario editables con salida formateada de solo lectura en los formularios de entidades. Esto es útil cuando desea mostrar valores de campo en formularios de edición sin permitir que los usuarios los modifiquen, mientras mantiene la presencia del campo en el formulario.
El widget utiliza el sistema de formateadores de campo de Drupal para renderizar los valores del campo, dándole control total sobre cómo aparecen los datos de solo lectura. Soporta dinámicamente todos los tipos de campo que tienen formateadores disponibles, convirtiéndolo en una solución universal para crear visualizaciones de campo no editables.
El módulo maneja inteligentemente el acceso a campos - si un usuario no tiene acceso de edición a un campo pero sí tiene acceso de visualización, el widget de solo lectura mostrará el valor del campo. Esto respeta el sistema de control de acceso a nivel de campo de Drupal mientras proporciona una mejor experiencia de usuario que simplemente ocultar los campos restringidos.
Features
- Soporte universal de tipos de campo - funciona con cualquier tipo de campo que tenga un formateador disponible
- Usa formateadores de campo para la visualización - aprovecha todas las opciones y configuraciones del formateador para la visualización de solo lectura
- Posición de etiqueta configurable - elija entre Arriba, En línea, Oculto o Visualmente Oculto para la ubicación de la etiqueta
- Integración de configuraciones del formateador - acceda a todas las configuraciones del formateador seleccionado directamente en la configuración del widget
- Visualización opcional de descripción del campo - muestre u oculte el texto de ayuda del campo debajo del valor de solo lectura
- Alternancia de validación de errores - controle si se muestran errores de validación para campos de solo lectura
- Integración de control de acceso - respeta los permisos de visualización a nivel de campo, mostrando campos a usuarios que pueden ver pero no editar
- Soporte de referencia a entidades - muestra correctamente las entidades referenciadas usando su formateador configurado
- Soporte para valores predeterminados - funciona con valores predeterminados de campo en formularios de creación de entidades
- Compatible con Drupal 8, 9, 10 y 11
Use Cases
Mostrar valores de campo generados automáticamente
Use el widget readonly para campos que se llenan programáticamente o a través de procesos automatizados, como campos computados, números de referencia auto-generados o valores asignados por el sistema. Los usuarios pueden ver el valor sin modificarlo accidentalmente.
Mostrar referencias a entidades sin modificación
Para campos de referencia a entidades donde el contenido referenciado debe ser visible pero no modificable por editores de contenido, el widget readonly puede mostrar la entidad referenciada usando cualquier formateador disponible (etiqueta, entidad renderizada, etc.) mientras previene cambios.
Crear permisos de edición escalonados
Cuando algunos usuarios deberían poder ver ciertos valores de campo pero no modificarlos, combine el widget readonly con el control de acceso a nivel de campo de Drupal. Los usuarios con acceso de solo visualización verán el valor formateado, mientras que aquellos sin acceso de visualización no verán el campo en absoluto.
Preservar valores predeterminados en formularios de creación
Para campos con valores predeterminados que deberían ser visibles pero no editables durante la creación de entidades, el widget readonly muestra el valor predeterminado. Esto es útil para mostrar categorías pre-asignadas, valores de estado o valores predeterminados del sistema.
Mostrar datos computados o derivados
Para campos que muestran datos computados de otras fuentes (como valores agregados o datos extraídos de sistemas externos), el widget readonly asegura que los usuarios entiendan que esta información es solo de visualización y no puede ser editada directamente a través del formulario.
Visualización de auditoría y metadatos
Muestre fechas de creación, información del autor, historial de revisiones u otros campos de metadatos en formularios de edición de manera de solo lectura. Los usuarios pueden ver este contexto importante mientras editan otros campos sin riesgo de modificación.
Tips
- El resumen del widget en la tabla de visualización de formulario muestra el formateador actual, posición de etiqueta y configuración de descripción para referencia rápida
- Use el formateador 'Rendered entity' para referencias a entidades cuando quiera mostrar la visualización completa de la entidad referenciada, no solo un enlace
- La opción de etiqueta 'Visually Hidden' mantiene la accesibilidad mientras oculta la etiqueta de los usuarios videntes
- Combine con el módulo Field Permissions para control granular sobre quién puede ver valores de campo readonly
- Pruebe los widgets readonly con diferentes roles de usuario para asegurar que el acceso al campo se comporte como se espera
- Para campos multi-valor, el campo completo se renderiza como solo lectura - los valores delta individuales no pueden ser editados selectivamente
Technical Details
Hooks 3
hook_field_widget_info_alter
Hace que readonly_field_widget esté disponible para todos los tipos de campo. El módulo itera a través de todos los formateadores de campo disponibles y recopila sus tipos de campo soportados, luego asigna esta lista completa a la propiedad field_types del widget readonly.
hook_form_alter
Controla el acceso a campos para campos con widget readonly basado en permisos de visualización. Cuando un campo usa el widget readonly, su acceso de formulario se establece basado en si el usuario actual puede ver el valor del campo, no editarlo. Esto permite que los campos se muestren a usuarios que tienen acceso de solo visualización.
hook_theme_suggestions_alter
Maneja sugerencias de plantilla específicamente para el campo title cuando se usa el widget readonly. Core sobrescribe la plantilla 'field' para títulos de nodo, lo cual entra en conflicto con el comportamiento de readonly_field_widget. Este hook asegura que la plantilla estándar 'field' se use para títulos configurados con el widget readonly.
Troubleshooting 5
El widget readonly solo se muestra cuando el campo tiene un valor. Asegúrese de que el campo tenga un valor predeterminado configurado o que la entidad tenga un valor existente para ese campo. En formularios de nuevas entidades, los campos sin valores predeterminados no aparecerán.
Este es el comportamiento esperado. Al ver la configuración de valor predeterminado del campo, el widget readonly muestra un mensaje de estado indicando que necesita cambiar a un widget editable para establecer valores predeterminados. Cambie el widget temporalmente, establezca el valor predeterminado, luego vuelva a readonly.
Después de cambiar el tipo de formateador, espere a que la solicitud AJAX se complete antes de ajustar las configuraciones específicas del formateador. El formulario de configuraciones se actualiza dinámicamente basado en el formateador seleccionado.
El módulo incluye manejo específico para campos title debido a las sobrescrituras de plantilla de core. Si los problemas persisten, verifique que ningún tema personalizado esté sobrescribiendo plantillas de campo de una manera que entre en conflicto con las sugerencias de tema del módulo.
El módulo establece el acceso al campo basado en permisos de visualización, no permisos de edición. Asegúrese de que sus hooks de acceso a campo o configuración definan correctamente el acceso de visualización. Los campos completamente ocultos de un usuario (sin acceso de visualización) no aparecerán en el formulario.
Security Notes 4
- Los valores de campo mostrados a través del widget readonly respetan el control de acceso a nivel de campo de Drupal - los usuarios sin acceso de visualización no verán el campo
- El widget no previene la validación del lado del servidor; habilitar error_validation ayuda a detectar cualquier violación de restricciones en el campo
- Los valores no pueden ser modificados a través del widget readonly, pero otro código o APIs aún podrían cambiar valores de campo - esta es protección solo de visualización
- El módulo usa el constructor de vistas de entidad estándar de Drupal y el sistema de formateadores, heredando sus características de seguridad