表
编辑该页面表
当构建一个控制台应用程序显示表格数据:它可能是有用的
1 2 3 4 5 6 7 8
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | ISBN |标题|作者| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 99921-58-10-7 |神曲|但丁| | 9971-5-0210-0 |双城记查尔斯·狄更斯| | | 960-425-059-0 |《魔戒》| j·r·r·托尔金| | 80-902734-1-6 |无人生还|阿加莎·克里斯蒂| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
显示一个表,使用表,设置标题,设置行然后呈现表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25
使用ob娱乐下载\组件\控制台\命令\命令;使用ob娱乐下载\组件\控制台\助手\表;使用ob娱乐下载\组件\控制台\输入\InputInterface;使用ob娱乐下载\组件\控制台\输出\OutputInterface;/ /……类SomeCommand扩展命令{公共函数执行(InputInterface美元输入,OutputInterface美元输出):int{美元表=新表(美元输出);美元表- >setheader ([“ISBN”,“标题”,“作者”])- >setRows ([[“99921-58-10-7”,“神曲”,“但丁的]、[“9971-5-0210-0”,“双城记”,查尔斯·狄更斯的]、[“960-425-059-0”,“指环王”,j·r·r·托尔金的]、[“80-902734-1-6”,“无人生还”,阿加莎·克里斯蒂的)));美元表- >呈现();返回命令::成功;}}
您可以添加一个表分离器在输出通过的一个实例TableSeparator一行:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\控制台\助手\TableSeparator;美元表- >setRows ([[“99921-58-10-7”,“神曲”,“但丁的]、[“9971-5-0210-0”,“双城记”,查尔斯·狄更斯的),新TableSeparator (), (“960-425-059-0”,“指环王”,j·r·r·托尔金的]、[“80-902734-1-6”,“无人生还”,阿加莎·克里斯蒂的)));
1 2 3 4 5 6 7 8 9
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | ISBN |标题|作者| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 99921-58-10-7 |神曲|但丁| | 9971-5-0210-0 |双城记查尔斯·狄更斯| | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 960-425-059-0 |《魔戒》| j·r·r·托尔金| | 80-902734-1-6 |无人生还|阿加莎·克里斯蒂| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
您可以选择显示标题顶部和底部的表:
1 2 3 4
/ /……美元表- >setHeaderTitle (“书”);美元表- >setFooterTitle (“页1/2”);美元表- >呈现();
1 2 3 4 5 6 7 8 9
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -书- - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | ISBN |标题|作者| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 99921-58-10-7 |神曲|但丁| | 9971-5-0210-0 |双城记查尔斯·狄更斯| | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 960-425-059-0 |《魔戒》| j·r·r·托尔金| | 80-902734-1-6 |无人生还|阿加莎·克里斯蒂| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1/2页- - - - - - - + - - - - - - - - - - - - - - - - - - +
默认情况下,自动计算列的宽度根据他们的内容。使用setColumnWidths ()方法明确设置列宽:
1 2 3
/ /……美元表- >setColumnWidths ([10,0,30.]);美元表- >呈现();
在这个例子中,第一列的宽度10
,最后一列的宽度30.
第二列将自动计算宽度,因为0
价值。
你也可以设置每一列的宽度分别setColumnWidth ()方法。它的第一个参数是(从列索引0
),第二个参数是列宽度:
1 2 3 4
/ /……美元表- >setColumnWidth (0,10);美元表- >setColumnWidth (2,30.);美元表- >呈现();
该命令的输出将会是:
1 2 3 4 5 6 7 8 9
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | ISBN |标题|作者| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | 99921-58-10-7 |神曲|但丁| | 9971-5-0210-0 |双城记查尔斯·狄更斯| | + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | 960-425-059-0 |《魔戒》| j·r·r·托尔金| | 80-902734-1-6 |无人生还|阿加莎·克里斯蒂| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
注意,定义的列宽总是视为最低列宽。如果内容不健康,给定的列宽度增加了最长的内容长度。这就是为什么在前面的第一列有一个例子13
字符长度尽管用户定义的10
作为它的宽度。
如果你喜欢用长内容在多个行,使用setColumnMaxWidth ()方法:
1 2 3 4
/ /……美元表- >setColumnMaxWidth (0,5);美元表- >setColumnMaxWidth (1,10);美元表- >呈现();
该命令的输出将会是:
1 2 3 4 5 6 7 8
+ - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | ISBN |标题|作者| + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -神圣Com + | 99921 | |但丁| | 58-1 edy | | | |鹿| | | |(剩下的行…)- - - - - - - | + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
默认情况下,显示水平表内容。通过你可以改变这一行为setVertical ()方法:
1 2 3
/ /……美元表- >setVertical ();美元表- >呈现();
该命令的输出将会是:
1 2 3 4 5 6 7 8 9
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + | ISBN: 99921-58-10-7 | |标题:神曲| |作者:但丁| | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | ISBN: 9971-5-0210-0 | |标题:《双城记》| |作者:查尔斯·狄更斯| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
6.1
支持垂直的呈现是在Symfony 6.1中引入的。ob娱乐下载
表的风格可以改变任何通过内置的样式setStyle ():
1 2 3 4 5 6
/ /调用一样美元表- >setStyle (“默认”);/ /更改默认风格紧凑美元表- >setStyle (“紧凑”);美元表- >呈现();
这段代码的结果:
1 2 3 4 5
ISBN标题作者99921-58-10-7神曲但丁9971-5-0210-0双城记查尔斯·狄更斯9971-5-0210-0《魔戒》j·r·r·托尔金80-902734-1-6无人生还阿加莎·克里斯蒂
你也可以设置风格无边界的
:
1 2
美元表- >setStyle (“无边界”);美元表- >呈现();
输出:
1 2 3 4 5 6 7 8
= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ISBN标题作者= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 99921-58-10-7神曲但丁99921-58-10-7双城记查尔斯·狄更斯960-425-059-0《魔戒》j·r·r·托尔金80-902734-1-6无人生还阿加莎·克里斯蒂= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
你也可以设置风格盒子
:
1 2
美元表- >setStyle (“盒子”);美元表- >呈现();
输出:
1 2 3 4 5 6 7 8
┌───────────────┬──────────────────────────┬──────────────────┐│ISBN│││标题作者├───────────────┼──────────────────────────┼──────────────────┤99921-58-10-7│││但丁神曲│││9971-5-0210-0双城记查尔斯·狄更斯││││960-425-059-0《魔戒》│j·r·r·托尔金│││80-902734-1-6无人生还│阿加莎·克里斯蒂│└───────────────┴──────────────────────────┴──────────────────┘
你也可以设置风格box-double
:
1 2
美元表- >setStyle (“box-double”);美元表- >呈现();
输出:
1 2 3 4 5 6 7 8
╔═══════════════╤══════════════════════════╤══════════════════╗║║ISBN││标题作者╠═══════════════╪══════════════════════════╪══════════════════╣║99921-58-10-7││但丁神曲║║9971-5-0210-0│双城记│查尔斯·狄更斯║║960-425-059-0│《魔戒》│j·r·r·托尔金║║80-902734-1-6│无人生还│阿加莎·克里斯蒂║╚═══════════════╧══════════════════════════╧══════════════════╝
如果内置的样式不适合您的需要,定义自己的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\控制台\助手\TableStyle;/ /默认情况下,这是基于默认风格美元tableStyle=新TableStyle ();/ /自定义样式美元tableStyle- >setHorizontalBorderChars (' < fg =红色> | < / > ')- >setVerticalBorderChars (< fg =红色> - < / > ')- >setDefaultCrossingChar (' ');/ /使用的定制样式表美元表- >setStyle (美元tableStyle);
这是一个完整的列表,你可以自定义:
- setPaddingChar ()
- setHorizontalBorderChars ()
- setVerticalBorderChars ()
- setCrossingChars ()
- setDefaultCrossingChar ()
- setCellHeaderFormat ()
- setCellRowFormat ()
- setBorderFormat ()
- setPadType ()
提示
你也可以注册一个风格在全球范围内:
1 2 3 4 5
/ /注册风格在色彩斑斓的名字表::setStyleDefinition (“丰富多彩”,美元tableStyle);/ /给定应用的定制样式表美元表- >setStyle (“丰富多彩”);
该方法还可以用于覆盖一个内置的风格。
除了内置的样式表,您还可以对每个表细胞通过应用不同的风格TableCellStyle:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21日22日23日24日25
使用ob娱乐下载\组件\控制台\助手\表;使用ob娱乐下载\组件\控制台\助手\TableCellStyle;美元表=新表(美元输出);美元表- >setRows ([[“978 - 0804169127”,新TableCell (“神曲”,(“风格”= >新TableCellStyle ([“对齐”= >“中心”,“成品”= >“红色”,“bg”= >“绿色”,/ /或“cellFormat”= >' <信息> % s < /信息>”)))))));美元表- >呈现();
跨越多个行和列
做一个表格单元横跨多个列可以使用TableCell:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\控制台\助手\表;使用ob娱乐下载\组件\控制台\助手\TableCell;使用ob娱乐下载\组件\控制台\助手\TableSeparator;美元表=新表(美元输出);美元表- >setheader ([“ISBN”,“标题”,“作者”])- >setRows ([[“99921-58-10-7”,“神曲”,“但丁的),新TableSeparator (), (新TableCell (“这个值跨度3列。”,(“colspan”= >3]))));美元表- >呈现();
这将导致:
1 2 3 4 5 6 7
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | ISBN |标题|作者| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - + | 99921-58-10-7 |神曲|但丁| + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + |这个值跨度3列。| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - +
提示
您可以创建一个多重线页面标题使用一次横贯整个表标题单元格宽度:
1 2 3 4 5
美元表- >setheader ([[新TableCell (“主要表标题”,(“colspan”= >3])]、[“ISBN”,“标题”,“作者”)));/ /……
这个生成:
1 2 3 4 5 6 7
+ - - - - - - - - - - - - - - - - - - - - - - - - + + |主要表标题| + - - - - - - - - - - - - - - - - - - - - - - - - + + | ISBN |标题|作者| + - - - - - - - - - - - - - - - - - - - - - - - - + + |…| + - - - - - - - - - - - - - - - - - - - - - - - - + +
以类似的方式你可以跨越多个行:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用ob娱乐下载\组件\控制台\助手\表;使用ob娱乐下载\组件\控制台\助手\TableCell;美元表=新表(美元输出);美元表- >setheader ([“ISBN”,“标题”,“作者”])- >setRows ([[“978 - 0521567817”,“论帝制》”,新TableCell (“但丁\ nspans多行”,(“行宽”= >2]),]、[“978 - 0804169127”,“神曲”)));美元表- >呈现();
这个输出:
1 2 3 4 5 6
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | ISBN |标题|作者| + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + | 978 - 0521567817 |论帝制》|但丁| | 978 - 0804169127 |神曲| | +跨越多个行- - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
您可以使用colspan
和行宽
同时选项,它允许您创建任何你可能希望的表布局。
修改显示表
的呈现()
方法需要通过整个表的内容。然而,有时这些信息不可用事先因为它是动态生成的。在这种情况下,使用appendRow ()方法,该方法需要相同的参数addRow ()
方法,添加行已经呈现表的底部。
唯一的要求是,表添加行必须呈现在一个控制台输出部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
使用ob娱乐下载\组件\控制台\助手\表;/ /……类SomeCommand扩展命令{公共函数执行(InputInterface美元输入,OutputInterface美元输出):int{美元部分=美元输出- >节();美元表=新表(美元部分);美元表- >addRow ([“爱”]);美元表- >呈现();美元表- >appendRow ([Sob娱乐下载ymfony的]);返回命令::成功;}}
这将显示在终端下表:
1 2 3 4
+ - - - - - - - - - - -ob娱乐下载 - + |喜欢| | Symfony | + - - - - - - - - - - - - +