大规模分配期间是否未填充Yii2非DB(或虚拟)属性?

时间:2016-02-21 23:30:34

标签: yii2 mass-assignment virtual-attribute

我已经定义了一个虚拟属性:

class ContactForm extends Model {

    public $name; // is not a DB field

我注意到在大量分配期间(在$model->load($_POST)中提交表单后)没有填充。它可以以某种方式与DB属性一起填充吗?或者我做错了什么,但不应该填充?谢谢!

1 个答案:

答案 0 :(得分:2)

文档:Massive Assignments

  

与普通模型一样,Active Record实例也享有大量的分配功能。使用此功能,您可以在单个PHP语句中为Active Record实例的多个属性赋值,如下所示。请记住,只有大量分配安全属性。

文档:Safe Attributes

  

出于这个原因,提供了一个特殊的验证器别名安全,以便您可以声明属性是安全的,而无需实际验证它。例如,以下规则声明标题和描述都是安全属性。

如果您没有任何验证需求,则必须对您的属性进行某种验证 - 将其定义为safe

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