diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 01e2f6e24e..f71661c643 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -14,6 +14,7 @@ Yii Framework 2 Change Log - Bug #17863: `\yii\helpers\BaseInflector::slug()` doesn't work with an empty string as a replacement argument (haruatari) - Bug #17881: `yii\db\Query::queryScalar()` wasn’t reverting the `select`, `orderBy`, `limit`, and `offset` params if an exception occurred (brandonkelly) - Bug #17875: Use `move_uploaded_file()` function instead of `copy()` and `unlink()` for saving uploaded files in case of POST request (sup-ham) +- Bug #17884: Fix 0 values in console Table rendered as empty string (mikehaertl) 2.0.32 January 21, 2020 diff --git a/framework/console/widgets/Table.php b/framework/console/widgets/Table.php index f637e9ceb6..75c3e247e3 100644 --- a/framework/console/widgets/Table.php +++ b/framework/console/widgets/Table.php @@ -133,7 +133,7 @@ class Table extends Widget { $this->rows = array_map(function($row) { return array_map(function($value) { - return $value ?: ' '; + return empty($value) && !is_numeric($value) ? ' ' : $value; }, array_values($row)); }, $rows); return $this; diff --git a/tests/framework/console/widgets/TableTest.php b/tests/framework/console/widgets/TableTest.php index 609bff98b4..04c7d83e00 100644 --- a/tests/framework/console/widgets/TableTest.php +++ b/tests/framework/console/widgets/TableTest.php @@ -285,8 +285,8 @@ EXPECTED; ->setRows([])->setScreenWidth(200)->run() ); } - - public function testEmptyTableCell() + + public function testEmptyAndZeroTableCell() { $table = new Table(); @@ -294,13 +294,23 @@ EXPECTED; ╔═══════╤═══════╗ ║ test1 │ test2 ║ ╟───────┼───────╢ -║ test │ ║ +║ 0 │ ║ +╟───────┼───────╢ +║ 0.0 │ ║ ╚═══════╧═══════╝ EXPECTED; - $this->assertEqualsWithoutLE($expected, $table->setHeaders(['test1', 'test2']) - ->setRows([['test', []]])->setScreenWidth(200)->run() + $this->assertEqualsWithoutLE( + $expected, + $table + ->setHeaders(['test1', 'test2']) + ->setRows([ + ['0', []], + ['0.0', []], + ]) + ->setScreenWidth(200) + ->run() ); } }