我创建了一个ActiveRecord模型,用户输入他们的电子邮件并添加到Yii2中的数据库。当它们被添加到数据库中时,我想根据它们从哪个视图输入信息来更新我的一个属性。我知道Yii2允许你在模型中设置默认值,比如
public function rules()
{
return [
[['view'], 'default', 'value' => a]
]
}
但我不确定如何根据每个视图设置不同的默认值。在我看来,我有 form->字段($ model,'email')并提交用户输入,我尝试了 setAttribute 和 setAttributes 并创建我自己的set方法,但它们都无法设置属性(我猜他们会工作,如果我说查询我的数据库并在已经存在的模型实例上执行它们。)
我确定我忽略了一些非常简单的事情
答案 0 :(得分:0)
您不应该根据当前视图定义默认值,因为模型(通常)不能用于视图,而是用于控制台应用程序或代码中与特定视图无关的其他位置。
正如@Patrick所说,你可以在每个视图中添加隐藏字段,如:
<?= $form->field($model, 'view')->hiddenInput(['value'=> $this->id /* view id or whatever */])->label(false);