Fixes #4571: ignore non-string attribute names for AttributeBehavior.

This commit is contained in:
Qiang Xue
2014-08-02 14:12:30 -04:00
parent 066989f0b0
commit 378b765e48
3 changed files with 9 additions and 2 deletions

View File

@@ -93,7 +93,10 @@ class AttributeBehavior extends Behavior
$attributes = (array) $this->attributes[$event->name];
$value = $this->getValue($event);
foreach ($attributes as $attribute) {
$this->owner->$attribute = $value;
// ignore attribute names which are not string (e.g. when set by TimestampBehavior::updatedAtAttribute)
if (is_string($attribute)) {
$this->owner->$attribute = $value;
}
}
}
}

View File

@@ -54,10 +54,12 @@ class BlameableBehavior extends AttributeBehavior
{
/**
* @var string the attribute that will receive current user ID value
* Set this property to be null if you do not want to record the creator ID.
*/
public $createdByAttribute = 'created_by';
/**
* @var string the attribute that will receive current user ID value
* Set this property to be null if you do not want to record the updater ID.
*/
public $updatedByAttribute = 'updated_by';
/**

View File

@@ -64,10 +64,12 @@ class TimestampBehavior extends AttributeBehavior
{
/**
* @var string the attribute that will receive timestamp value
* Set this property to be null if you do not want to record the creation time.
*/
public $createdAtAttribute = 'created_at';
/**
* @var string the attribute that will receive timestamp value
* @var string the attribute that will receive timestamp value.
* Set this property to be null if you do not want to record the update time.
*/
public $updatedAtAttribute = 'updated_at';
/**