$owner
недоступно в init()
. Он установлен в attach()
. Обычно рабочий процесс выглядит следующим образом:
$behavior = new MyBehavior(); // init() is called here
$behavior->attach($owner); // owner is set here
Вы, вероятно, должны перезаписать attach()
в вашем случае:
public function attach($owner) {
foreach ($owner->attributes() as $attribute) {
if (strpos($attribute, 'calc_')) {
if (!is_function(get_parent_class()::$set . \yii\helpers\camelize($attribute))) {
throw Exception("Function to set value of calc field '" . $attribute . "' not defined.");
}
$calcFields[] = $attribute;
}
}
if (!($owner->hasAttribute('isCalcValueSet'))) {
throw Exception("This table is missing a field for isCalcValueSet");
}
parent::attach($owner);
}