首页 > 解决方案 > Yii2 使用私有财产 - 非 db 列

问题描述

我正在使用 Yii2 并且迄今为止使用非 db 列的公共属性,如下所示:

public $category_id;
public function rules() {
        return [
            [['category_id'], 'safe'],           
        ];
    }
//// inside $dataProvider
$this->load($params);

它完美地工作。但是现在我想将 category_id 设为私有,那么如何在规则中管理它以及如何在加载时加载和设置内部表单元素?

标签: propertiesyii2

解决方案


你可以使用 accessor 和 mutator 来访问你的私有属性,例如:

private category_id;

public function setCategory (value)
{
    $this->category_id = value;
}

public function getCategory()
{
    return $this->category_id;
}

这些方法允许在应用程序的其他部分使用私有属性,就像具有不同名称的公共属性一样。例如,您可以在规则中使用它

public function rules()
{
    return [['category', 'safe']];
 }

或者在另一个代码中:

$model->category = 777

推荐阅读