【问题标题】:Different Value/Default for Property in Model Yii2模型 Yii2 中属性的不同值/默认值
【发布时间】:2018-05-29 13:48:03
【问题描述】:

我创建了一个 ActiveRecord 模型,用户可以在其中输入他们的电子邮件并添加到 Yii2 中的数据库中。当它们被添加到数据库时,我想根据他们从哪个视图输入信息来更新我的一个属性。我知道 Yii2 可以让你在模型中设置一个默认值,比如

public function rules()
{
    return [
        [['view'], 'default', 'value' => a]
    ]
}

但我不确定如何根据每个视图设置不同的默认值。在我有 form->field($model, 'email') 并提交用户输入的视图中,我尝试了 setAttributesetAttributes 并创建我自己的 set 方法,但它们都无法设置属性(我猜如果我说查询我的数据库并在我的模型的现有实例上执行它们,它们会起作用)。

我确定我忽略了一些非常简单的事情

【问题讨论】:

  • 也许你正在寻找这样的东西:\Yii::$app->controller->action->id?你可以把它放在rules 函数中而不是a
  • 在视图中的表单中添加一个隐藏字段,表示视图。在您的控制器中,评估字段的值并相应地设置模型的属性。
  • Ziki,这可能行得通,但所有视图都由 actionIndex 处理,因此它们具有相同的 id 我猜@Patrick 这对我很有用。我什至没有在控制器中评估它,我只是直接用隐藏字段设置模型的属性。谢谢!

标签: activerecord view model yii2


【解决方案1】:

您不应该根据当前视图定义默认值,因为模型(通常)不能从视图中使用,而是在控制台应用程序或代码中与特定视图无关的其他位置使用。

正如@Patrick 所说,您可以在每个视图中添加隐藏字段,例如:

<?= $form->field($model, 'view')->hiddenInput(['value'=> $this->id /* view id or whatever */])->label(false);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-06
    • 2019-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多