2016-08-04 3 views
-1

암을 업데이트 dynagrid하지만 업데이트 작업이 업데이트오류 동적 양식을 만들 wbranca의 yii2를 사용

      <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> 

이의 형태이다

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

의 오류를 반환 모델은 다음과 같습니다

<?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 일부 soggestion을 게시했습니다. ... 희망 유용 .. – scaisEdge

답변

0

$ 키와 $ 값 (별칭 $ multipleModels)의 요소 수가 동일하지 않으므로 오류 메시지가 표시되는 경우 key => value 요소의 잘못된 쌍을 가진 연관 배열 만들기

$ keys 및 $ multipleModels의 내용을 var_dump (또는 xdebug에서 검사)하여 실제 필요에 맞게 수정하십시오.

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