2017-02-21 8 views
0

Я хочу вставить одну и ту же запись в одну таблицу. У меня есть только один входной массив в форме ниже, но я хочу сохранить многократную запись времени для label input array. моя формаВставьте несколько записей одной таблицы Yii2

<div class="surveys-questions-form"> 

    <?php $form = ActiveForm::begin(); ?> 

    <?php 

     if(isset($_GET['option_id']) and $_GET['option_id'] > 0) 
      $id= $_GET['option_id']; 
     else 
      $id= $model->option_id; 
     echo $form->field($model, 'question_id')->hiddenInput(['value' => $id])->label(false); 
    ?> 

    <div class="col-md-6"> 
    <div id="question_wrapper"> 
     <?= $form->field($model, 'type')->dropDownList([ 'text' => 'Text', 'numbers' => 'Numbers', 'date' => 'Date', 'texarea' => 'Texarea', 'checkbox' => 'Checkbox', 'radio' => 'Radio', 'rating' => 'Rating', ], ['prompt' => '']) ?> 
     <div id="add_more_field"> 
      <?= $form->field($model, 'label[]')->textInput(['maxlength' => true]) ?> 
     </div> 
     <div class="form-group"> 
      <?php 
       echo Html::a('Add more', 'javascript:void(0);', [ 
        'id' => 'surveys-questions-new-button', 
        'class' => 'pull-right btn btn-primary btn-xs' 
       ]) 
      ?> 
     </div> 
    </div> 
    </div> 
    <div class="col-md-12"> 
    <div class="form-group"> 
     <?= Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?> 
    </div> 
    </div> 
    <?php ActiveForm::end(); ?> 

</div> 

и контроллер

public function actionCreate() 
{ 
    $model = new QuestionsOptions(); 

    if ($model->load(Yii::$app->request->post()) && $model->save()) { 
     return $this->redirect(['view', 'id' => $model->option_id]); 
    } else { 
     return $this->renderAjax('create', [ 
      'model' => $model, 
     ]); 
    } 
} 

Дайте мне следующую ошибку, когда я пытаюсь отправить форму.

Label must be a string. 

Мой массив $ _POST

Array 
(
    [_csrf-backend] => LXBhajI3YVpOIikeRWYHYkNCAD4Kb1ZrQzwER21GL2MdCTgkWm5ZDQ== 
    [QuestionsOptions] => Array 
     (
      [question_id] => 47 
      [type] => numbers 
      [label] => Array 
       (
        [0] => Label1 
        [1] => Label2 
        [2] => Labe3 
       ) 

     ) 

) 
+0

пожалуйста, вы можете поделиться print_r результат, чтобы я получил некоторое представление о ваших опубликованных данных, тогда я могу направить вас – Dani

+0

@ Дани большое спасибо. Я изменил свой вопрос, который вы можете увидеть в последнем столбце – Coder

ответ

1

Если вы хотите сохранить несколько цикл записи использования я предлагаю вам использовать Еогеасп цикл лучше

public function actionCreate() 
{ 
     $model = new QuestionsOptions(); 

    if ($model->load(Yii::$app->request->post())) { 
      if(sizeof(array_filter($_POST['QuestionsOptions']['label'])) > 0){ 
      foreach($_POST['QuestionsOptions']['label'] as $key => $row){ 
        $model->setIsNewRecord(true); 
        $model->id = null; 
        $model->label = $row; 
        $model->save(); 
      } 
      } 
      return $this->redirect(['view', 'id' => $model->option_id]); 
     } else { 
      return $this->renderAjax('create', [ 
       'model' => $model, 
      ]); 
     } 
    } 
+0

@ так сильно. Но еще одна вещь, как я буду иметь дело, когда я их обновляю. – Coder

+0

Я имею в виду, как я показываю эти поля, когда я их обновляю? – Coder

+0

вы хотите показать его в одном поле ввода ??? – Dani