Компонент 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