Introducción a los Widgets
Un widget es el contenido que se dibuja dentro de una <column>. El atributo type determina qué clase se instancia: el motor concatena Widget + el type con la primera letra en mayúscula. Por ejemplo, type="label" instancia WidgetLabel, type="number" instancia WidgetNumber, etc.
Todas las clases de widget viven en Lib/WidgetReport/ del plugin.
🗂️ Tipos de widget disponibles
label: texto fijo o variable. Es el más utilizado.default: datos del sistema (empresa, usuario, fecha, hora, página).number: valores numéricos con formato (decimales, separadores, divisa, iconos).calculated: totales acumulados en el pie (sum,count,avg,min,max).line: líneas separadoras y rectángulos.image: imagen desde ruta de archivo.imageproduct: imagen de un producto a partir de su referencia.
🔧 Atributos comunes a todos los widgets
type(obligatorio): tipo de widget.value: valor o texto literal a mostrar. Si se informa junto afieldname,fieldnametiene prioridad.fieldname: nombre del campo del dato cuyo valor se muestra. Ver resolución defieldnamemás abajo.color: color del texto o trazo. Por defectoblack. Ver lista de colores más abajo.class: clases CSS adicionales para la salida HTML únicamente. Permite usar utilidades de Bootstrap (por ejemploclass="h5"oclass="text-muted"). El PDF ignora este atributo.title: título de la tarjeta resumen cuando la columna usaarea="cards". Solo HTML.cardcolor: color contextual de Bootstrap para la tarjeta resumen. Solo HTML.
🎨 Colores disponibles
Puedes indicar el color por nombre o por valor hexadecimal:
Por nombre:
black(negro, valor por defecto)blue(azul)green(verde)orange(naranja)red(rojo)white(blanco)yellow(amarillo)silver(gris claro)
Por valor hexadecimal (con o sin #):
4169E1— azul royal#FF8800— naranjaCCCCCC— gris neutro
Ejemplo:
<widget type="label" value="Título" color="4169E1" bold="true" />
🔍 Resolución de fieldname
El atributo fieldname acepta varias formas para acceder al valor de la fila actual:
- Campo directo:
fieldname="importe"→$fila->importe - Propiedad de objeto:
fieldname="empresa.nombre"→$fila->empresa->nombre - Elemento de array:
fieldname="totales[0]"→$fila->totales[0] - Llamada a método sin parámetros:
fieldname="getTotal()"→$fila->getTotal() - Llamada a método con parámetros:
fieldname="getTotal('eur','2')"→$fila->getTotal(['eur', '2'])
En los métodos con parámetros, estos se pasan al método como un array, no como argumentos individuales. Asegúrate de que tu método los recibe como
array $params.