Предоставлено
Dany Maillard
в #26933.

В Symfony 4.2 таблицы теперь могут отображать заголовок как вверху, так и внизу своего содержимого с помощью методов setHeaderTitle() и setFooterTitle():

use Symfony\Component\Console\Helper\Table;
 // ...

$table = new Table($output);
$table
    ->setHeaderTitle('Books')
    ->setFooterTitle('Page 1/2')
    ->setHeaders(['ISBN', 'Title', 'Author'])
    ->setRows([
        ['99921-58-10-7', 'Divine Comedy', 'Dante Alighieri'],
        // ...
    ])
;
$table->render();

Вот как приведенный выше пример будет выглядеть в вашем терминале:

+---------------+----------- Books --------+------------------+
| ISBN          | Title                    | Author           |
+---------------+--------------------------+------------------+
| 99921-58-10-7 | Divine Comedy            | Dante Alighieri  |
| 9971-5-0210-0 | A Tale of Two Cities     | Charles Dickens  |
| 960-425-059-0 | The Lord of the Rings    | J. R. R. Tolkien |
| 80-902734-1-6 | And Then There Were None | Agatha Christie  |
+---------------+--------- Page 1/2 -------+------------------+

Установка максимальной ширины столбцов

Предоставлено
Roland Franssen
в #28373.

Ширина, определенная с помощью метода setColumnWidth(), считается минимальной шириной столбца. Если содержимое не помещается, ширина столбца увеличивается до максимальной длины содержимого. В Symfony 4.2 мы добавили новый метод setColumnMaxWidth() для переноса длинного содержимого в несколько строк для сохранения ширины столбца.

// ...

// the first argument is the column position (starting from 0) and
// the second argument is the max length in characters
$table->setColumnMaxWidth(0, 5);
$table->setColumnMaxWidth(1, 10);
$table->render();

В этом примере максимальная длина первого столбца устанавливается равной 5 символам, а максимальная длина второго столбца — 10 символам. Содержимое Give больше не помещается в эти столбцы, поэтому оно переносится на несколько строк:

+-------+------------+--------------------------------+
| ISBN  | Title      | Author                         |
+-------+------------+--------------------------------+
| 99921 | Divine Com | Dante Alighieri                |
| -58-1 | edy        |                                |
| 0-7   |            |                                |
|                (the rest of rows...)                |
+-------+------------+--------------------------------+