diff --git a/framework/CHANGELOG.md b/framework/CHANGELOG.md index 1dfbfdb..acaf4aa 100644 --- a/framework/CHANGELOG.md +++ b/framework/CHANGELOG.md @@ -4,6 +4,7 @@ Yii Framework 2 Change Log 2.0.38 under development ------------------------ +- Bug #18269: Fix integer safe attribute to work properly in `yii\base\Model` (Ladone) - Enh #18236: Allow `yii\filters\RateLimiter` to accept a closure function for the `$user` property in order to assign values on runtime (nadar) - Bug #18233: Add PHP 8 support (samdark) - Bug #18239: Fix support of no-extension files for `FileValidator::validateExtension()` (darkdef) diff --git a/framework/base/Model.php b/framework/base/Model.php index 9080625..b525b16 100644 --- a/framework/base/Model.php +++ b/framework/base/Model.php @@ -798,7 +798,7 @@ class Model extends Component implements StaticInstanceInterface, IteratorAggreg } $attributes = []; foreach ($scenarios[$scenario] as $attribute) { - if ($attribute[0] !== '!' && !in_array('!' . $attribute, $scenarios[$scenario])) { + if (strncmp($attribute, '!', 1) !== 0 && !in_array('!' . $attribute, $scenarios[$scenario])) { $attributes[] = $attribute; } } diff --git a/tests/framework/base/ModelTest.php b/tests/framework/base/ModelTest.php index 2e3c082..4fedffb 100644 --- a/tests/framework/base/ModelTest.php +++ b/tests/framework/base/ModelTest.php @@ -175,6 +175,18 @@ class ModelTest extends TestCase $this->assertTrue($speaker->isAttributeSafe('firstName')); } + public function testIsAttributeSafeForIntegerAttribute() + { + $model = new RulesModel(); + $model->rules = [ + [ + [123456], 'safe', + ] + ]; + + $this->assertTrue($model->isAttributeSafe(123456)); + } + public function testSafeScenarios() { $model = new RulesModel();