From f3473aa4e85ca28a205e1b8c93f6892c16f8179d Mon Sep 17 00:00:00 2001 From: Anton Date: Wed, 9 Mar 2022 10:02:51 +0300 Subject: [PATCH] Fix `Model::__clone()` (#19291) * Fix Model::__clone() Reset validators and errors after cloning to prevent changing cloned model via inner objects of clone like as InlineValidator * Update CHANGELOG.md Co-authored-by: Bizley --- framework/CHANGELOG.md | 1 + framework/base/Model.php | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index e8eb8a6127..5117c60c6a 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -6,6 +6,7 @@ Yii Framework 2 Change Log - Bug #19243: Handle `finfo_open` for tar.xz as `application/octet-stream` on PHP 8.1 (longthanhtran) - Bug #19235: Fix return type compatibility of `yii\web\SessionIterator` class methods for PHP 8.1 (virtual-designer) +- Bug #19291: Reset errors and validators in `yii\base\Model::__clone()` (WinterSilence) 2.0.45 February 11, 2022 diff --git a/framework/base/Model.php b/framework/base/Model.php index 40c820e904..900bb0c610 100644 --- a/framework/base/Model.php +++ b/framework/base/Model.php @@ -1052,4 +1052,15 @@ class Model extends Component implements StaticInstanceInterface, IteratorAggreg { $this->$offset = null; } + + /** + * {@inheritdoc} + */ + public function __clone() + { + parent::__clone(); + + $this->_errors = null; + $this->_validators = null; + } }