diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 48d3e0f550..84a1c5b08a 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -54,6 +54,7 @@ Yii Framework 2 Change Log - Enh #20591: Add PHPStan/Psalm annotations for `yii\rbac\BaseManager::getItems()` (mspirkov) - Bug #20594: Fix `@return` annotation for `Instance::get()` (mspirkov) - Bug #20595: Fix `@return` annotation for `BaseHtml::getAttributeValue()` (mspirkov) +- Bug #20605: Fix return value in `SerialColumn::renderDataCellContent()` (mspirkov) - Bug #20604: Fix `@var` annotation for `yii\db\Command::$pdoStatement` (mspirkov) - Bug #20600: Fix `@var` annotation for `yii\test\FileFixtureTrait::$dataFile` (mspirkov) - Bug #20608: Fix `@return` annotations for `yii\rest\Serializer` methods (mspirkov) diff --git a/framework/grid/SerialColumn.php b/framework/grid/SerialColumn.php index b63696e8c9..46c274ec52 100644 --- a/framework/grid/SerialColumn.php +++ b/framework/grid/SerialColumn.php @@ -42,9 +42,9 @@ class SerialColumn extends Column { $pagination = $this->grid->dataProvider->getPagination(); if ($pagination !== false) { - return $pagination->getOffset() + $index + 1; + return (string) ($pagination->getOffset() + $index + 1); } - return $index + 1; + return (string) ($index + 1); } } diff --git a/tests/framework/grid/SerialColumnTest.php b/tests/framework/grid/SerialColumnTest.php new file mode 100644 index 0000000000..149264ccd6 --- /dev/null +++ b/tests/framework/grid/SerialColumnTest.php @@ -0,0 +1,108 @@ +mockWebApplication(); + + Yii::$app->getRequest()->setQueryParams([ + 'page' => $page, + ]); + + $column = new SerialColumn([ + 'grid' => new GridView([ + 'dataProvider' => new ArrayDataProvider($dataProviderConfig), + ]), + ]); + + $result = $column->renderDataCell(['id' => 1], 1, $index); + $this->assertSame($expectedResult, $result); + } + + public static function provideRenderDataCellData(): array + { + return [ + [ + [ + 'pagination' => false, + ], + null, + 0, + '1', + ], + [ + [ + 'pagination' => false, + ], + null, + 5, + '6', + ], + [ + [ + 'pagination' => new Pagination(), + ], + null, + 0, + '1', + ], + [ + [ + 'pagination' => new Pagination(), + ], + null, + 4, + '5', + ], + [ + [ + 'pagination' => new Pagination([ + 'totalCount' => 20, + 'defaultPageSize' => 10, + ]), + ], + '2', + 0, + '11', + ], + [ + [ + 'pagination' => new Pagination([ + 'totalCount' => 20, + 'defaultPageSize' => 10, + ]), + ], + '2', + 3, + '14', + ], + ]; + } +}