"设置未知属性"向实例化对象添加属性时出错 - yii2

时间:2015-03-18 11:34:05

标签: php oop model-view-controller yii2

我正在使用yii2,我想在调用$ model-> createValidators()之后为模型添加一些额外的属性和验证规则。

但是当我尝试使用下面的代码时,在“$ this-> {$ attr-> code} = null”这一行,它会抛出错误:“设置未知属性”。

public function rules(){
    $rules = [];
    if(!is_null($this->attributeSetId)){ // set the rules for custom attributes
        foreach($this->attributeSet->attributeGroups as $group){
            foreach($group->productAttributes as $attr){  
                if($attr->required=="1")
                    $rules[] = [[$attr->code], 'required'];
                else
                    $rules[] = [[$attr->code], 'safe'];
                $this->{$attr->code} = null; // trying to set new property to the model (this is the line causing error)
            }
        }

    }
    return array_merge([
        [['attributeSetId', 'parent', 'typeId'], 'integer'],
        [['attributeSetId'], 'required'],
    ], $rules);
}

我知道在使用上面的方法实例化它之后可以向对象声明属性,但它在上述情况下不起作用。

当我手动将属性设置为:     “public $ propertyName;” 在模型的开头,它的工作完美,但就我而言,属性列表是动态的。

有人可以对此有所了解吗?

编辑:

0 个答案:

没有答案