如果模型中的属性包含数组数据(比如日期),这些数据填充在具有此属性的多行的表单中,我如何将初始值分配给数组元素,以便它们在出现时最初显示在表单中。
在我的示例中,我的array-type属性包含日期,我希望表单中的每个新日期行在表单加载时具有不同的值。
<?= $form->field($model, 'datesToPay[]') ?>
我尝试使用Yii2的DefaultValueValidator
过滤器为datesToPay
数组元素指定初始值,但在表单加载时不显示该值。
['datesToPay', 'each', 'rule' => ['default', 'value' => date('Y-m-d')]]
答案 0 :(得分:2)
你可以在渲染之前进行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,
]);
}
}