2015-05-12 41 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模型屬性。

相關問題