mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-07 00:18:25 +08:00
Fixed canGetProperty() and canSetProperty() returns false for yii\db\BaseActiveRecord attributes
This commit is contained in:
@ -7,6 +7,7 @@ Yii Framework 2 Change Log
|
|||||||
- Enh #9989: ActiveForm now respects formtarget, formmethod and formenctype attributes of submit button (AnatolyRugalev)
|
- Enh #9989: ActiveForm now respects formtarget, formmethod and formenctype attributes of submit button (AnatolyRugalev)
|
||||||
- Enh #12296: Added value validation to `yii\log\Target::setLevels()` (Mak-Di)
|
- Enh #12296: Added value validation to `yii\log\Target::setLevels()` (Mak-Di)
|
||||||
- Enh #12073: Added the ability to suppress the generation of input hint when it is specified through `Model::attributeHints()` (PowerGamer1)
|
- Enh #12073: Added the ability to suppress the generation of input hint when it is specified through `Model::attributeHints()` (PowerGamer1)
|
||||||
|
- Bug #9561: Fixed `canGetProperty()` and `canSetProperty()` returns `false` for `yii\db\BaseActiveRecord` attributes (klimov-paul)
|
||||||
- Bug #11990: Fixed `yii\db\BaseActiveRecord::refresh()` may set incorrect `oldAttributes` values at some cases (only-victor)
|
- Bug #11990: Fixed `yii\db\BaseActiveRecord::refresh()` may set incorrect `oldAttributes` values at some cases (only-victor)
|
||||||
- Bug #12009: Do not render "for" field label attribute for active form RadioList and CheckboxList (shevchik87, samdark)
|
- Bug #12009: Do not render "for" field label attribute for active form RadioList and CheckboxList (shevchik87, samdark)
|
||||||
- Bug #12068: Added missing 'LEVEL_PROFILE' for the syslog target (Mak-Di)
|
- Bug #12068: Added missing 'LEVEL_PROFILE' for the syslog target (Mak-Di)
|
||||||
|
|||||||
@ -230,6 +230,28 @@ abstract class BaseActiveRecord extends Model implements ActiveRecordInterface
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
public function canGetProperty($name, $checkVars = true, $checkBehaviors = true)
|
||||||
|
{
|
||||||
|
if ($this->hasAttribute($name)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return parent::canGetProperty($name, $checkVars, $checkBehaviors);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @inheritdoc
|
||||||
|
*/
|
||||||
|
public function canSetProperty($name, $checkVars = true, $checkBehaviors = true)
|
||||||
|
{
|
||||||
|
if ($this->hasAttribute($name)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return parent::canSetProperty($name, $checkVars, $checkBehaviors);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* PHP getter magic method.
|
* PHP getter magic method.
|
||||||
* This method is overridden so that attributes and related objects can be accessed like properties.
|
* This method is overridden so that attributes and related objects can be accessed like properties.
|
||||||
|
|||||||
@ -1293,4 +1293,18 @@ abstract class ActiveRecordTest extends DatabaseTestCase
|
|||||||
$this->assertTrue($newOrder->getIsNewRecord());
|
$this->assertTrue($newOrder->getIsNewRecord());
|
||||||
$this->assertEquals($newTotal, $newOrder->total);
|
$this->assertEquals($newTotal, $newOrder->total);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAttributeAccess()
|
||||||
|
{
|
||||||
|
$model = new Customer();
|
||||||
|
|
||||||
|
$this->assertTrue($model->canSetProperty('name'));
|
||||||
|
$this->assertTrue($model->canGetProperty('name'));
|
||||||
|
$this->assertFalse(isset($model->name));
|
||||||
|
|
||||||
|
$model->name = 'foo';
|
||||||
|
$this->assertTrue(isset($model->name));
|
||||||
|
unset($model->name);
|
||||||
|
$this->assertNull($model->name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user