【问题标题】:Initial Values for an array-type attribute in Yii2 ModelYii2 模型中数组类型属性的初始值
【发布时间】:2016-10-05 10:41:14
【问题描述】:

如果模型中的一个属性包含数组数据,比如日期,这些数据填充到该属性的多行表单中,我如何为数组元素分配初始值,以便它们在出现时最初显示在表单中.

在我的示例中,我的数组类型属性保存日期,我希望表单中的每个新日期行在表单加载时具有不同的值。

<?= $form->field($model, 'datesToPay[]') ?>

我尝试使用 Yii2 的 DefaultValueValidator 过滤器为 datesToPay 数组元素分配初始值,但在表单加载时它不显示该值。

['datesToPay', 'each', 'rule' => ['default', 'value' => date('Y-m-d')]]

【问题讨论】:

    标签: yii2


    【解决方案1】:

    你可以在渲染前在controllerAction中做

    public function actionCreate()
    {
        $model = new MyModel();
    
        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        } else {
    
            $model->datesToPay[0] = 'YourValue';
    
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }
    

    【讨论】:

    • 感谢您的回答。这似乎适用于我在问题中描述的设置。当我尝试在现场使用日期选择器时,我的问题就来了。我正在使用 Kartik 日期选择器小部件,因此显然隐藏值已根据您建议的解决方案正确设置,但日期选择器字段(显示值)未显示它,我找不到覆盖该值的方法。
    • 我建议你发布一个关于你的 datePicker 问题的新的具体问题 .. 也包含 datePicker 的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多