2015-05-12 44 views
2

我应该如何从单个数据库字段中获取数据,该字段已作为json编码数组保存到我的yii2更新表单中。Yii2如何从数据库中检索可重复字段以更新表格

我需要做一些foreach循环,然后修改表单字段代码的下面的位以包含当前数组中的当前值。

<?= $form->field($model, 'group[{{row-count-placeholder}}][name]')->textInput(['maxlength' => 255])->label('Name') ?> 

下面是我重复的领域设置为我创建的形式,每个阵列有以下三个项目/表单字段

<?= $form->field($model, 'group[{{row-count-placeholder}}][name]')->textInput(['maxlength' => 255])->label('Name') ?> 
    <?= $form->field($model, 'group[{{row-count-placeholder}}][url]')->textInput(['maxlength' => 255])->label('URL') ?> 
    <?= $form->field($model, 'group[{{row-count-placeholder}}][colour]')->dropDownList(['yellow' => 'Yellow', 'blue' => 'Blue', 'green' => 'Green']); ?> 
    <?= $form->field($model, 'group[{{row-count-placeholder}}][datetime]')->textInput(['maxlength' => 255])->label('Date/Time') ?> 
    <?= $form->field($model, 'group[{{row-count-placeholder}}][status]')->dropDownList(['normal' => 'Normal', 'Featured' => 'Featured', 'sponsored' => 'Sponsored']); ?> 

我知道不可能所以任何步骤如何我会去了解一个完整的答案开发它会很好。

+1

这是复杂的...一个很好的但不是穷举的方法可以在这里找到[http://www.yiiframework.com/wiki/666/handling-tabular-data-loading-and-validation-in-yii -2 /)或[这里](http://www.yiiframework.com/doc-2.0/guide-input-tabular-input.html)。 '$ model-> loadMultiptle()'是最基本的东西。这意味着你必须创建可重复的模型对象。 – robsch

+0

@robsch \t 我可能会感到困惑,但是您链接的示例是否意味着每个数组项都保存在单独的数据库中,或者将它作为数组保存到单个数据库字段中。 –

回答

0

您应该使用第二个非AR模型来表示数组项。在您的控制器中加载AR模型后,解码该字段并将数组项目转换为模型。将这些传递给视图。处理此类批次表单时,请使用loadMultiple()。验证所有模型后,将它们转换为数组并将它们编码为您的主要AR模型属性。

相关问题