Nuevo en Symfony 2.7: Tablas avanzadas en los comandos de consola
El componente Console de Symfony es el segundo componente más popular en todo el mundo, con más de ocho millones de descargas en Packagist.org. Una de las claves de su éxito es que incluye un montón de opciones para hacer comandos de consola avanzados. En Symfony 2.7 hemos ido un paso más allá y ahora los comandos también pueden crear tablas con estructuras irregulares.
Añadido soporte para colspan y rowspan
Se han definido dos nuevas propiedades llamadas colspan
y rowspan
que funcionan igual que las opciones del mismo nombre en las tablas HTML. Estas propiedades se usan a través de la nueva clase TableCell
que permite crear cualquier estructura irregular de tablas que puedas imaginar.
Ejemplo de tabla que utiliza la opción colspan
use Symfony\Component\Console\Helper\Table; $table = new Table($output); $table ->setHeaders(array('Título Columna #1', 'Título Columna #2', 'Título Columna #3')) ->setRows(array( array('Valor #1', 'Valor #2', 'Valor #3'), new TableSeparator(), array(new TableCell('Este valor ocupa 3 columnas de anchura.', array('colspan' => 3))), )) ; $table->render();
El resultado de renderizar la tabla anterior sería:
+-------------------+-------------------+--------------------+ | Título Columna #1 | Título Columna #2 | Título Columna #1 | +-------------------+-------------------+--------------------+ | Valor #1 | Valor #2 | Valor #3 | +-------------------+-------------------+--------------------+ | Este valor ocupa 3 columnas de anchura. | +-------------------+-------------------+--------------------+
Ejemplo de tabla que utiliza la opción rowspan
use Symfony\Component\Console\Helper\Table; $table = new Table($output); $table ->setHeaders(array('Título Columna #1', 'Título Columna #2', 'Título Columna #3')) ->setRows(array( array( new TableCell('Valor #1 que ocupa dos filas de alto.', array('rowspan' => 2)), 'Valor #2 - 1', 'Valor #3 - 1', ), array('Valor #2 - 2', 'Valor #3 - 2'), )) ; $table->render();
El resultado de renderizar la tabla anterior sería:
+---------------------+-------------------+--------------------+ | Título Columna #1 | Título Columna #2 | Título Columna #3 | +---------------------+-------------------+--------------------+ | Valor #1 que ocupa | Valor #2 - 1 | Valor #3 - 1 | | dos filas de alto. | Valor #2 - 2 | Valor #3 - 2 | +---------------------+-------------------+--------------------+
Por supuesto estas dos propiedades se pueden combinar en una misma tabla, con lo que su estructura puede ser tan irregular como necesites. Puedes echar un vistazo al código de los tests de las tablas para ver más ejemplos avanzados.
Añadido soporte para cabeceras de varias líneas
Una de las mejoras indirectas conseguidas gracias a las propiedades colspan
y rowspan
es que ahora las cabeceras de las tablas puede contener más de una fila. Esto es ideal para mostrar un título global en la tabla y después un título específico para cada columna:
use Symfony\Component\Console\Helper\Table; $table = new Table($output); $table ->setHeaders(array( array(new TableCell('Título principal de la tabla', array('colspan' => 3))), array('Título Columna #1', 'Título Columna #2', 'Título Columna #3'), )) ->setRows(array( // ... )) ; $table->render();
El resultado de renderizar la tabla anterior sería:
+-------------------+-------------------+-------------------+ | Título principal de la tabla | +-------------------+-------------------+-------------------+ | Título Columna #1 | Título Columna #2 | Título Columna #3 | +-------------------+-------------------+-------------------+ | ... | +-------------------+-------------------+-------------------+
Esta nueva funcionalidad ha sido desarrollada por Abdellatif Ait boudad y puedes ver todos los detalles en el pull request #13438.
Fuente: New in Symfony 2.7: Advanced table layouts for console commands
Comentarios
-
#1
Buen trabajo. Gracias.
Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente
unos meses después de su publicación para asegurar que estos sigan
siendo relevantes.
Proyectos Symfony destacados
La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más
Síguenos en @symfony_es para acceder a las últimas noticias.