Clase de tabla HTML

La clase Table proporciona métodos que le permiten generar automáticamente HTML tablas de matrices o conjuntos de resultados de bases de datos.

Usando la clase de tabla

Inicializando la clase

La clase Tabla no se proporciona como un servicio y se debe crear una instancia de ella. «normalmente», por ejemplo:

<?php

$table = new \Higgs\View\Table();

Ejemplos

A continuación se muestra un ejemplo que muestra cómo se puede crear una tabla a partir de un matriz multidimensional. Tenga en cuenta que el primer índice de la matriz se convertirá en el encabezado de la tabla (o puede configurar sus propios encabezados usando setHeading() método descrito en la referencia de funciones a continuación).

<?php

$table = new \Higgs\View\Table();

$data = [
    ['Name', 'Color', 'Size'],
    ['Fred', 'Blue', 'Small'],
    ['Mary', 'Red', 'Large'],
    ['John', 'Green', 'Medium'],
];

echo $table->generate($data);

A continuación se muestra un ejemplo de una tabla creada a partir del resultado de una consulta de base de datos. El La clase de tabla generará automáticamente los encabezados basados en la tabla. nombres (o puede establecer sus propios encabezados usando setHeading() método descrito en la referencia de clase a continuación).

<?php

$table = new \Higgs\View\Table();

$query = $db->query('SELECT * FROM my_table');

echo $table->generate($query);

A continuación se muestra un ejemplo que muestra cómo se puede crear una tabla usando datos discretos. parámetros:

<?php

$table = new \Higgs\View\Table();

$table->setHeading('Name', 'Color', 'Size');

$table->addRow('Fred', 'Blue', 'Small');
$table->addRow('Mary', 'Red', 'Large');
$table->addRow('John', 'Green', 'Medium');

echo $table->generate();

Aquí está el mismo ejemplo, excepto que en lugar de parámetros individuales, Se utilizan matrices:

<?php

$table = new \Higgs\View\Table();

$table->setHeading(['Name', 'Color', 'Size']);

$table->addRow(['Fred', 'Blue', 'Small']);
$table->addRow(['Mary', 'Red', 'Large']);
$table->addRow(['John', 'Green', 'Medium']);

echo $table->generate();

Cambiando el aspecto de tu mesa

La clase de tabla le permite configurar una plantilla de tabla con la que puede especifique el diseño de su diseño. Aquí está el prototipo de plantilla:

<?php

$template = [
    'table_open' => '<table border="0" cellpadding="4" cellspacing="0">',

    'thead_open'  => '<thead>',
    'thead_close' => '</thead>',

    'heading_row_start'  => '<tr>',
    'heading_row_end'    => '</tr>',
    'heading_cell_start' => '<th>',
    'heading_cell_end'   => '</th>',

    'tfoot_open'  => '<tfoot>',
    'tfoot_close' => '</tfoot>',

    'footing_row_start'  => '<tr>',
    'footing_row_end'    => '</tr>',
    'footing_cell_start' => '<td>',
    'footing_cell_end'   => '</td>',

    'tbody_open'  => '<tbody>',
    'tbody_close' => '</tbody>',

    'row_start'  => '<tr>',
    'row_end'    => '</tr>',
    'cell_start' => '<td>',
    'cell_end'   => '</td>',

    'row_alt_start'  => '<tr>',
    'row_alt_end'    => '</tr>',
    'cell_alt_start' => '<td>',
    'cell_alt_end'   => '</td>',

    'table_close' => '</table>',
];

$table->setTemplate($template);

Nota

You’ll notice there are two sets of «row» blocks in the plantilla. Estos le permiten crear colores o diseños de filas alternas. elementos que se alternan con cada iteración de los datos de la fila.

NO es necesario que envíe una plantilla completa. Si solo necesitas Para cambiar partes del diseño, simplemente puede enviar esos elementos. En esto Por ejemplo, solo se cambia la etiqueta de apertura de la tabla:

<?php

$template = [
    'table_open' => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">',
];

$table->setTemplate($template);

También puede establecer valores predeterminados para estos pasando una serie de configuraciones de plantilla al constructor de tablas:

<?php

$customSettings = [
    'table_open' => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">',
];

$table = new \Higgs\View\Table($customSettings);

Sincronizar filas con encabezados

Nuevo en la versión 4.4.0.

El método setSyncRowsWithHeading(true) permite que cada valor de datos se coloca en la misma columna definida en setHeading() si un Se utilizó una matriz asociativa como parámetro. Esto es especialmente útil cuando se trata de datos cargados a través de REST API donde el pedido no es su gusto, o si la API devolvió demasiados datos.

Si una fila de datos contiene una clave que no está presente en el encabezado, su valor es filtrado. Por el contrario, si una fila de datos no tiene una clave en el encabezado, en su lugar se colocará una celda vacía.

<?php

$table = new \Higgs\View\Table();

$table->setHeading(['name' => 'Name', 'color' => 'Color', 'size' => 'Size'])
    ->setSyncRowsWithHeading(true)
    ->addRow(['color' => 'Blue', 'name' => 'Fred', 'size' => 'Small'])
    ->addRow(['size' => 'Large', 'age' => '24', 'name' => 'Mary'])
    ->addRow(['color' => 'Green']);

echo $table->generate();
?>

<!-- Generates a table with this prototype: -->
<table border="0" cellpadding="4" cellspacing="0">
    <thead>
        <tr>
            <th>Name</th>
            <th>Color</th>
            <th>Size</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>Fred</td>
            <td>Blue</td>
            <td>Small</td>
        </tr>
        <tr>
            <td>Mary</td>
            <td></td>
            <td>Large</td>
        </tr>
        <tr>
            <td></td>
            <td>Green</td>
            <td></td>
        </tr>
    </tbody>
</table>

Importante

You must call setSyncRowsWithHeading(true) and setHeading([...]) antes de agregar filas mediante addRow([...]) donde Se produce la reordenación de las columnas.

Usar una matriz como entrada para generar() produce el mismo resultado:

<?php

$data = [
    [
        'color' => 'Blue',
        'name'  => 'Fred',
        'size'  => 'Small',
    ],
    [
        'size' => 'Large',
        'age'  => '24',
        'name' => 'Mary',
    ],
    [
        'color' => 'Green',
    ],
];

$table = new \Higgs\View\Table();

$table->setHeading(['name' => 'Name', 'color' => 'Color', 'size' => 'Size'])
    ->setSyncRowsWithHeading(true);

echo $table->generate($data);

Referencia de clase

class Higgs\View\Table
$function = null

Le permite especificar una función PHP nativa o un objeto de matriz de función válido para aplicar a todos los datos de la celda.

<?php

$table = new \Higgs\View\Table();

$table->setHeading('Name', 'Color', 'Size');
$table->addRow('Fred', '<strong>Blue</strong>', 'Small');

$table->function = 'htmlspecialchars';
echo $table->generate();

En el ejemplo anterior, todos los datos de la celda se ejecutarían a través de la función htmlspecialchars() de PHP, lo que daría como resultado:

<td>fred</td><td> <strong>Azul</strong></td><td> Pequeño</td>
generate([$tableData = null])
Parámetros:
  • $tableData (mixed) – datos con los que rellenar las filas de la tabla

Devuelve:

tabla HTML

Tipo del valor devuelto:

cadena

Devuelve una cadena que contiene la tabla generada. Acepta un parámetro opcional que puede ser una matriz o un objeto de resultado de base de datos.

setCaption($caption)
Parámetros:
  • $caption (string) – título de la tabla

Devuelve:

Instancia de tabla (encadenamiento de métodos)

Tipo del valor devuelto:

Tabla

Le permite agregar un título a la tabla.

<?php

$table->setCaption('Colors');
setHeading([$args = [][, ...]])
Parámetros:
  • $args (Mixed) – una matriz o varias cadenas que contienen los títulos de las columnas de la tabla

Devuelve:

Instancia de tabla (encadenamiento de métodos)

Tipo del valor devuelto:

Tabla

Le permite configurar el encabezado de la tabla. Puede enviar una matriz o parámetros discretos:

<?php

$table->setHeading('Name', 'Color', 'Size'); // or

$table->setHeading(['Name', 'Color', 'Size']);
setFooting([$args = [][, ...]])
Parámetros:
  • $args (Mixed) – una matriz o varias cadenas que contienen los valores del pie de la tabla

Devuelve:

Instancia de tabla (encadenamiento de métodos)

Tipo del valor devuelto:

Tabla

Le permite configurar el pie de la mesa. Puede enviar una matriz o parámetros discretos:

<?php

$table->setFooting('Subtotal', $subtotal, $notes); // or

$table->setFooting(['Subtotal', $subtotal, $notes]);
addRow([$args = [][, ...]])
Parámetros:
  • $args (Mixed) – una matriz o varias cadenas que contienen los valores de la fila

Devuelve:

Instancia de tabla (encadenamiento de métodos)

Tipo del valor devuelto:

Tabla

Le permite agregar una fila a su tabla. Puede enviar una matriz o parámetros discretos:

<?php

$table->addRow('Blue', 'Red', 'Green'); // or

$table->addRow(['Blue', 'Red', 'Green']);

Si desea establecer los atributos de etiqueta de una celda individual, puede utilizar una matriz asociativa para esa celda. La clave asociativa datos define los datos de la celda. Cualquier otro par clave => val se agrega como atributo clave=”val” a la etiqueta:

<?php

$cell = ['data' => 'Blue', 'class' => 'highlight', 'colspan' => 2];
$table->addRow($cell, 'Red', 'Green');

?>

<!-- Generates: -->
<td class='highlight' colspan='2'>Blue</td><td>Red</td><td>Green</td>
makeColumns([$array = [][, $columnLimit = 0]])
Parámetros:
  • $array (array) – una matriz que contiene datos de varias filas

  • $columnLimit (int) – Recuento de columnas en la tabla

Devuelve:

una matriz de columnas de tabla HTML

Tipo del valor devuelto:

matriz

Este método toma una matriz unidimensional como entrada y crea una matriz multidimensional con una profundidad igual al número de columnas deseadas. Esto permite mostrar una única matriz con muchos elementos en una tabla que tiene un recuento de columnas fijo. Considere este ejemplo:

<?php

$list = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve'];

$newList = $table->makeColumns($list, 3);

$table->generate($newList);

?>

<!-- Generates a table with this prototype: -->
<table border="0" cellpadding="4" cellspacing="0">
    <tr>
        <td>one</td>
        <td>two</td>
        <td>three</td>
    </tr>
    <tr>
        <td>four</td>
        <td>five</td>
        <td>six</td>
    </tr>
    <tr>
        <td>seven</td>
        <td>eight</td>
        <td>nine</td>
    </tr>
    <tr>
        <td>ten</td>
        <td>eleven</td>
        <td>twelve</td>
    </tr>
</table>
setTemplate($template)
Parámetros:
  • $template (array) – una matriz asociativa que contiene valores de plantilla

Devuelve:

verdadero en caso de éxito, falso en caso de error

Tipo del valor devuelto:

booleano

Le permite configurar su plantilla. Puede enviar una plantilla completa o parcial.

<?php

$template = [
    'table_open' => '<table border="1" cellpadding="2" cellspacing="1" class="mytable">',
];

$table->setTemplate($template);
setEmpty($value)
Parámetros:
  • $valor (mixed) – Valor para poner en celdas vacías

Devuelve:

Instancia de tabla (encadenamiento de métodos)

Tipo del valor devuelto:

Tabla

Le permite establecer un valor predeterminado para usar en cualquier celda de la tabla que esté vacía. Podrías, por ejemplo, establecer un espacio que no se rompa:

<?php

$table->setEmpty('&nbsp;');
clear()
Devuelve:

Instancia de tabla (encadenamiento de métodos)

Tipo del valor devuelto:

Tabla

Le permite borrar el encabezado de la tabla, los datos de la fila y el título. Si necesita mostrar varias tablas con diferentes datos que debería llamar a este método después de que cada tabla haya sido generado para borrar la información de la tabla anterior.

Ejemplo

<?php

$table = new \Higgs\View\Table();

$table->setCaption('Preferences')
    ->setHeading('Name', 'Color', 'Size')
    ->addRow('Fred', 'Blue', 'Small')
    ->addRow('Mary', 'Red', 'Large')
    ->addRow('John', 'Green', 'Medium');

echo $table->generate();

$table->clear();

$table->setCaption('Shipping')
    ->setHeading('Name', 'Day', 'Delivery')
    ->addRow('Fred', 'Wednesday', 'Express')
    ->addRow('Mary', 'Monday', 'Air')
    ->addRow('John', 'Saturday', 'Overnight');

echo $table->generate();
setSyncRowsWithHeading(bool $orderByKey)
Devuelve:

Instancia de tabla (encadenamiento de métodos)

Tipo del valor devuelto:

Tabla

Permite ordenar cada clave de datos de fila por claves de encabezado. Esto da mayor control de los datos que se desplazan en la columna correcta. Hacer asegúrese de establecer este valor antes de llamar al primer método addRow().