表格
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.3,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
表格
在构建控制台应用程序时,显示表格数据可能很有用:
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 |无人生还|阿加莎·克里斯蒂 | +---------------+--------------------------+------------------+
要显示表格,使用表格,设置标题,设置行,然后渲染表:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20
使用ob娱乐下载\组件\控制台\助手\表格;/ /……类SomeCommand扩展命令{公共函数执行(InputInterface$输入, OutputInterface$输出){$表格=新表($输出);$表格->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 |无人生还|阿加莎·克里斯蒂|+---------------+--------------------------+------------------+
默认情况下,根据列的内容自动计算列的宽度。使用setColumnWidths ()方法显式设置列宽度:
1 2 3
/ /……$表格->setColumnWidths (数组(10,0,30.));$表格->呈现();
在本例中,第一列宽度为10
,最后一列宽度为30.
并且第二列宽度将自动计算,因为0
价值。该命令的输出将是:
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
因为它的宽度。
属性为每一列单独设置宽度setColumnWidth ()方法。它的第一个参数是列索引(从0
),第二个参数是列的宽度:
1 2 3 4
/ /……$表格->setColumnWidth (0,10);$表格->setColumnWidth (2,30.);$表格->呈现();
表格样式可以通过更改为任何内置样式setStyle ():
1 2 3 4 5 6
//与不调用相同$表格->setStyle (“默认”);//将默认样式更改为紧凑样式$表格->setStyle (“紧凑”);$表格->呈现();
这段代码的结果是:
1 2 3 4 5
ISBN书名作者:神曲但丁·阿利吉耶里《双城记》查尔斯·狄更斯《指环王》j·r·r·托尔金《无人后踪》阿加莎·克里斯蒂
也可以将样式设置为无边界的
:
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无人生还阿加莎·克里斯蒂 =============== ========================== ==================
如果内置样式不符合你的需要,定义你自己的样式:
12 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\控制台\助手\TableStyle;//默认情况下,这是基于默认样式$风格=新TableStyle ();//自定义样式$风格->setHorizontalBorderChar (' < fg =红色> | < / > ')->setVerticalBorderChar (' < fg =品红> - < / > ')->setCrossingChar (' ');//使用此表的样式$表格->setStyle ($风格);
下面是一个完整的列表,你可以自定义:
- setPaddingChar ()
- setHorizontalBorderChar ()
- setVerticalBorderChar ()
- setCrossingChar ()
- setCellHeaderFormat ()
- setCellRowFormat ()
- setBorderFormat ()
- setPadType ()
提示
你也可以全局注册一个样式:
1 2 3 4 5
//在彩色名称下注册样式表格::setStyleDefinition (“丰富多彩”,$风格);//使用它作为一个表$表格->setStyle (“丰富多彩”);
此方法也可用于覆盖内置样式。
跨多列和行
要创建跨多列的表单元格,可以使用TableCell:
12 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\控制台\助手\表格;使用ob娱乐下载\组件\控制台\助手\TableSeparator;使用ob娱乐下载\组件\控制台\助手\TableCell;$表格=新表($输出);$表格->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 | |作者 | +-------+-------+--------+ | ...| +-------+-------+--------+
以类似的方式可以跨多行:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用ob娱乐下载\组件\控制台\助手\表格;使用ob娱乐下载\组件\控制台\助手\TableCell;$表格=新表($输出);$表格->setheader (数组(“ISBN”,“标题”,“作者”))->setRows (数组(数组(“978 - 0521567817”,“论帝制》”,新TableCell (《但丁跨越多行》,数组(“行宽”= >2)))数组(“978 - 0804169127”,“神曲”),));$表格->呈现();
这个输出:
1 2 3 4 5 6
+----------------+---------------+---------------------+ | ISBN | |作者 | +----------------+---------------+---------------------+ | 978 - 0521567817 |论帝制》|但丁| | 978 - 0804169127 |神曲|跨越多个行 | +----------------+---------------+---------------------+
您可以使用colspan
而且行宽
选项,同时允许您创建任何表的布局,您可能希望。
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。