1
- Table
2
- =====
1
+ Table Helper
2
+ ============
3
3
4
- When building a console application it may be useful to display tabular data:
5
-
6
- .. code-block :: terminal
7
-
8
- +---------------+--------------------------+------------------+
9
- | ISBN | Title | Author |
10
- +---------------+--------------------------+------------------+
11
- | 99921-58-10-7 | Divine Comedy | Dante Alighieri |
12
- | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |
13
- | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien |
14
- | 80-902734-1-6 | And Then There Were None | Agatha Christie |
15
- +---------------+--------------------------+------------------+
16
-
17
- .. note ::
18
-
19
- As an alternative, consider using the
20
- :ref: `SymfonyStyle <symfony-style-content >` to display a table.
4
+ When building console applications, Symfony provides several utilities for
5
+ rendering tabular data. The simplest option is to use the table methods from
6
+ :ref: `Symfony Style <symfony-style-content >`. While convenient, this approach
7
+ doesn't allow customization of the table's design. For more control and advanced
8
+ features, use the ``Table `` console helper explained in this article.
21
9
22
10
To display a table, use :class: `Symfony\\ Component\\ Console\\ Helper\\ Table `,
23
11
set the headers, set the rows and then render the table::
@@ -48,6 +36,22 @@ set the headers, set the rows and then render the table::
48
36
}
49
37
}
50
38
39
+ This outputs:
40
+
41
+ .. code-block :: terminal
42
+
43
+ +---------------+--------------------------+------------------+
44
+ | ISBN | Title | Author |
45
+ +---------------+--------------------------+------------------+
46
+ | 99921-58-10-7 | Divine Comedy | Dante Alighieri |
47
+ | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens |
48
+ | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien |
49
+ | 80-902734-1-6 | And Then There Were None | Agatha Christie |
50
+ +---------------+--------------------------+------------------+
51
+
52
+ Adding Table Separators
53
+ -----------------------
54
+
51
55
You can add a table separator anywhere in the output by passing an instance of
52
56
:class: `Symfony\\ Component\\ Console\\ Helper\\ TableSeparator ` as a row::
53
57
@@ -61,6 +65,8 @@ You can add a table separator anywhere in the output by passing an instance of
61
65
['80-902734-1-6', 'And Then There Were None', 'Agatha Christie'],
62
66
]);
63
67
68
+ This outputs:
69
+
64
70
.. code-block :: terminal
65
71
66
72
+---------------+--------------------------+------------------+
@@ -73,13 +79,18 @@ You can add a table separator anywhere in the output by passing an instance of
73
79
| 80-902734-1-6 | And Then There Were None | Agatha Christie |
74
80
+---------------+--------------------------+------------------+
75
81
82
+ Adding Table Titles
83
+ -------------------
84
+
76
85
You can optionally display titles at the top and the bottom of the table::
77
86
78
87
// ...
79
88
$table->setHeaderTitle('Books');
80
89
$table->setFooterTitle('Page 1/2');
81
90
$table->render();
82
91
92
+ This outputs:
93
+
83
94
.. code-block :: terminal
84
95
85
96
+---------------+----------- Books --------+------------------+
@@ -92,6 +103,9 @@ You can optionally display titles at the top and the bottom of the table::
92
103
| 80-902734-1-6 | And Then There Were None | Agatha Christie |
93
104
+---------------+--------- Page 1/2 -------+------------------+
94
105
106
+ Setting the Column Widths Explicitly
107
+ ------------------------------------
108
+
95
109
By default, the width of the columns is calculated automatically based on their
96
110
contents. Use the :method: `Symfony\\ Component\\ Console\\ Helper\\ Table::setColumnWidths `
97
111
method to set the column widths explicitly::
@@ -114,7 +128,7 @@ argument is the column width::
114
128
$table->setColumnWidth(2, 30);
115
129
$table->render();
116
130
117
- The output of this command will be :
131
+ This outputs :
118
132
119
133
.. code-block :: terminal
120
134
@@ -141,7 +155,7 @@ If you prefer to wrap long contents in multiple rows, use the
141
155
$table->setColumnMaxWidth(1, 10);
142
156
$table->render();
143
157
144
- The output of this command will be :
158
+ This outputs :
145
159
146
160
.. code-block :: terminal
147
161
@@ -154,14 +168,17 @@ The output of this command will be:
154
168
| (the rest of the rows...) |
155
169
+-------+------------+--------------------------------+
156
170
171
+ Rendering Vertical Tables
172
+ -------------------------
173
+
157
174
By default, table contents are displayed horizontally. You can change this behavior
158
175
via the :method: `Symfony\\ Component\\ Console\\ Helper\\ Table::setVertical ` method::
159
176
160
177
// ...
161
178
$table->setVertical();
162
179
$table->render();
163
180
164
- The output of this command will be :
181
+ This outputs :
165
182
166
183
.. code-block :: terminal
167
184
@@ -179,17 +196,24 @@ The output of this command will be:
179
196
180
197
Support for vertical rendering was introduced in Symfony 6.1.
181
198
199
+ Customizing the Table Style
200
+ ---------------------------
201
+
182
202
The table style can be changed to any built-in styles via
183
203
:method: `Symfony\\ Component\\ Console\\ Helper\\ Table::setStyle `::
184
204
185
- // same as calling nothing
205
+ // this 'default' style is the one used when no style is specified
186
206
$table->setStyle('default');
187
207
188
- // changes the default style to compact
208
+ Built-in Table Styles
209
+ ~~~~~~~~~~~~~~~~~~~~~
210
+
211
+ **Compact **::
212
+
189
213
$table->setStyle('compact');
190
214
$table->render();
191
215
192
- This code results in :
216
+ This outputs :
193
217
194
218
.. code-block :: terminal
195
219
@@ -199,12 +223,12 @@ This code results in:
199
223
960-425-059-0 The Lord of the Rings J. R. R. Tolkien
200
224
80-902734-1-6 And Then There Were None Agatha Christie
201
225
202
- You can also set the style to `` borderless `` ::
226
+ ** Borderless ** ::
203
227
204
228
$table->setStyle('borderless');
205
229
$table->render();
206
230
207
- which outputs:
231
+ This outputs:
208
232
209
233
.. code-block :: terminal
210
234
@@ -217,12 +241,12 @@ which outputs:
217
241
80-902734-1-6 And Then There Were None Agatha Christie
218
242
=============== ========================== ==================
219
243
220
- You can also set the style to `` box `` ::
244
+ ** Box ** ::
221
245
222
246
$table->setStyle('box');
223
247
$table->render();
224
248
225
- which outputs:
249
+ This outputs:
226
250
227
251
.. code-block :: terminal
228
252
@@ -235,12 +259,12 @@ which outputs:
235
259
│ 80-902734-1-6 │ And Then There Were None │ Agatha Christie │
236
260
└───────────────┴──────────────────────────┴──────────────────┘
237
261
238
- You can also set the style to `` box-double `` ::
262
+ ** Double box** ::
239
263
240
264
$table->setStyle('box-double');
241
265
$table->render();
242
266
243
- which outputs:
267
+ This outputs:
244
268
245
269
.. code-block :: terminal
246
270
@@ -253,7 +277,10 @@ which outputs:
253
277
║ 80-902734-1-6 │ And Then There Were None │ Agatha Christie ║
254
278
╚═══════════════╧══════════════════════════╧══════════════════╝
255
279
256
- If the built-in styles do not fit your need, define your own::
280
+ Making a Custom Table Style
281
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
282
+
283
+ If the built-in styles do not fit your needs, define your own::
257
284
258
285
use Symfony\Component\Console\Helper\TableStyle;
259
286
@@ -343,7 +370,7 @@ To make a table cell that spans multiple columns you can use a :class:`Symfony\\
343
370
;
344
371
$table->render();
345
372
346
- This results in :
373
+ This outputs :
347
374
348
375
.. code-block :: terminal
349
376
@@ -366,7 +393,7 @@ This results in:
366
393
]);
367
394
// ...
368
395
369
- This generates :
396
+ This outputs :
370
397
371
398
.. code-block :: terminal
372
399
@@ -445,7 +472,7 @@ The only requirement to append rows is that the table must be rendered inside a
445
472
}
446
473
}
447
474
448
- This will display the following table in the terminal :
475
+ This outputs :
449
476
450
477
.. code-block :: terminal
451
478
@@ -466,7 +493,7 @@ This will display the following table in the terminal:
466
493
$table->render();
467
494
// ...
468
495
469
- This will display :
496
+ This outputs :
470
497
471
498
.. code-block :: terminal
472
499
0 commit comments