Новое в Symfony 3.1: Установка значения ширины столбцов в таблицах в консоли

Компонент Console позволяет легко генерировать таблицы :

use Symfony\Component\Console\Helper\Table;

$table = new Table($output);
$table
    ->setHeaders(array('ISBN', 'Title', 'Author', 'Price'))
    ->setRows(array(
        array('99921-58-10-7', 'Divine Comedy', 'Dante Alighieri', '9.95'),
        array('9971-5-0210-0', 'A Tale of Two Cities', 'Charles Dickens', '139.25'),
    ))
;
$table->render();

По умолчанию ширина столбцов рассчитываются автоматически на основе их содержимого. Это общепринятое поведение, но некоторые приложения могут потребоваться более явный контроль над дизайном таблицы.

В Symfony 3.1, хелпер Table позволяет определить ширину любого или всех столбцов таблицы. Во-первых, новый метод setColumnWidth($columnIndex, $columnWidth) позволяет указать ширину данного столбца (индексы столбцов начинается с 0):

// ...
$table
    ->setHeaders(...)
    ->setRows(array(...))
    ->setColumnWidth(0, 15)
    ->setColumnWidth(3, 10)
;
$table->render();

Этот пример устанавливает ширину первого столбца (индекс 0) до 15 символов и  ширину четвертой колонке (индекс 3) до 10 символов. Вывод команды будет следующим:

+-----------------+----------------------+-----------------+------------+
| ISBN            | Title                | Author          | Price      |
+-----------------+----------------------+-----------------+------------+
| 99921-58-10-7   | Divine Comedy        | Dante Alighieri | 9.95       |
| 9971-5-0210-0   | A Tale of Two Cities | Charles Dickens | 139.25     |
+-----------------+----------------------+-----------------+------------+

В зависимости от стилей, используемых в вашей таблице, фактическая ширина колонки может быть длиннее. Например, стиль таблицы по умолчанию добавляет по пробелу слева и справа от каждого столбца, поэтому их ширина будет увеличена на 2.

Представленные значения ширины столбцов является минимальными значением для ширина столбцов. Если содержимое не помещается в столбец, соответственно ширина столбцов будет автоматически увеличена.

Вы также можете установить ширину всех столбцов с помощью метода setColumnWidths(array $widths). Используйте 0 в качестве ширины столбцов не хотите, устанавливать ее в явном виде:

// ...
$table
    ->setHeaders(...)
    ->setRows(array(...))
    ->setColumnWidths(array(15, 0, 0, 10))
;
$table->render();

В этом примере ширина первой колонки установлена в 15 символов, последнего столбецв в 10, а второй и третий столбцы определяют свою ширину автоматически по содержимому( значение 0 ), так что внешний вид получившейся таблицыа будет таким же, как и в предыдущем примере.

Источник: http://symfony.com/blog/new-in-symfony-3-1-explicit-column-widths-in-console-tables

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

12 + 5 =