2016-08-04 42 views
-1

上午,但更新操作返回錯誤wbranca dynagrid使用wbranca yii2創建動態表單更新

array_combine(): Both parameters should have an equal number of elements 

錯誤這是更新

      <div class="panel-body"> 
          <?php DynamicFormWidget::begin([ 
          'widgetContainer' => 'dynamicform_wrapper', // required: only alphanumeric characters plus "_" [A-Za-z0-9_] 
          'widgetBody' => '.container-items', // required: css class selector 
          'widgetItem' => '.item', // required: css class 
          'limit' => 10, // the maximum times, an element can be cloned (default 999) 
          'min' => 1, // 0 or 1 (default 1) 
          'insertButton' => '.add-item', // css class 
          'deleteButton' => '.remove-item', // css class 
          'model' => $modelsPrItem[0], 
          'formId' => 'dynamic-form', 
          'formFields' => [ 
           'po_item_no', 
           'quantity', 
          ], 
         ]); ?> 

           <div class="container-items"> 
            <!-- widgetContainer --> 
            <?php foreach ($modelsPrItem as $i => $modelPrItem): ?> 
             <div class="item paneld"> 
              <!-- widgetBody --> 
              <div class="panelf-heading"> 
               <div class="pull-right"> 
                <button type="button" class="add-item btn btn-success btn-xs"><i class="glyphicon glyphicon-plus"></i></button> 
                <button type="button" class="remove-item btn btn-danger btn-xs"><i class="glyphicon glyphicon-minus"></i></button> 
               </div> 
               <div class="clearfix"></div> 
              </div> 
              <div class="panelf-body"> 
               <?php 
             // necessary for update action. 
             if (! $modelPrItem->isNewRecord) { 
              echo Html::activeHiddenInput($modelPrItem, "[{$i}]PRID"); 
             } 
            ?> 
                <div class="row"> 
                 <div class="col-md-2"> 
                  <?= $form->field($modelPrItem, "[{$i}]Quantity")->textInput(['maxlength' => 128]) ?> 
                 </div> 
                 <div class="col-md-2"> 
                  <?= $form->field($modelPrItem, "[{$i}]Unit_Price")->textInput(['maxlength' => 128]) ?> 
                 </div> 
                 <div class="col-md-2"> 
                  <?= $form->field($modelPrItem, "[{$i}]Extended_price")->textInput(['maxlength' => 128]) ?> 
                 </div> 
                 <div class="col-md-2"> 
                  <?= $form->field($modelPrItem, "[{$i}]Currency_ID")->dropDownList(
              ArrayHelper::map(Tblcurrency::find()->all(),'CurrencyID','currency_symbol'),[] 
              ); ?> 
                 </div> 
                 <div class="col-md-4"> 
                  <?= $form->field($modelPrItem, "[{$i}]Description")->textArea(['maxlength' => 128]) ?> 
                 </div> 
                </div> 
                <!-- .row --> 
              </div> 
             </div> 
             <?php endforeach; ?> 
           </div> 
           <?php DynamicFormWidget::end(); ?> 
         </div> 

這種形式是模型:

<?php 

    namespace app\models; 

     use Yii; 
     use yii\helpers\ArrayHelper; 

      class Model extends \yii\base\Model 
     { 
     /** 
    * Creates and populates a set of models. 
* 
* @param string $modelClass 
* @param array $multipleModels 
* @return array 
*/ 
public static function createMultiple($modelClass, $multipleModels = []) 
{ 
    $model = new $modelClass; 
    $formName = $model->formName(); 
    $post  = Yii::$app->request->post($formName); 
    $models = []; 

    if (! empty($multipleModels)) { 
     $keys = array_keys(ArrayHelper::map($multipleModels, 'id', 'id')); 
     $multipleModels = array_combine($keys, $multipleModels); 
    } 

    if ($post && is_array($post)) { 
     foreach ($post as $i => $item) { 
      if (isset($item['id']) && !empty($item['id']) && isset($multipleModels[$item['id']])) { 
       $models[] = $multipleModels[$item['id']]; 
      } else { 
       $models[] = new $modelClass; 
      } 
     } 
    } 

    unset($model, $formName, $post); 

    return $models; 
} 

}

以上返回錯誤,當我運行更新,尤其是當更新多個項目時

+0

我不使用wbranca擴展名,但看着你的代碼.i發佈了一些消息。 ...希望有用.. – scaisEdge

回答

0

錯誤消息說$ key和$ values(別名$ multipleModels)中元素的數目不相同,所以你試圖使用錯誤的key對來創建關聯數組=> value元素

嘗試使用var_dump(或使用xdebug檢查)$ keys和$ multipleModels的內容,並根據您的實際需要調整代碼。

if (! empty($multipleModels)) { 
    $keys = array_keys(ArrayHelper::map($multipleModels, 'id', 'id')); 
    var_dump($keys); 
    var_dump($multipleModels); 
    $multipleModels = array_combine($keys, $multipleModels); 
}