如何在 yii2 activeForm 中保存多个无线电的值?

米尔扎娜·马苏托娃

我有一个有很多问题的调查应用程序。每个问题都有以radiolist 形式呈现的选项。在 for 循环中使用ActiveFormRadioList以便从数据库中获取所有问题和选项。打印问题和选项一切正常,但是

当我尝试将答案保存到数据库时,它只保存最后一个选项。

在我的保存操作中,我尝试放置一个 foreach 循环以保存每个答案,但它对我不起作用。

我试图 var_dump $model->save$request->post('Questions')有所有选定的选项,而不仅仅是最后一个。

模型:这里只是规则:

public function rules(){
  return[
    [['id','question_id',  'option_id'], 'required']
  ];

}

看法:

<?php $form = ActiveForm::begin([
    'id' => 'my-form-id',
    'action' => ['answers/save'],
]
); 

?> 

<?php $questions = Questions::find()->orderBy('id ASC')->all(); ?>

  <?php for ($i=0; $i<count($questions); $i++): ?>    
     <?= Html::encode("{$questions[$i]->title}") ?>
  <?php $options = Options::find()->where (['question_id'=>$questions[$i]->id])->orderBy('id ASC')->all();
  $options = ArrayHelper::map($options,'id', 'title');
  ?>
  <label class="container" >
    <?= $form->field($model, 'option_title')->radioList(
        $options, 
        ['name'=>'Questions['.$questions[$i]->id.']', 
        'separator' => '<br>',
        ])->label(false) ?>        
  </label>

<?php endfor; ?>

<?= Html::submitButton('Save', ['class' => 'btn btn-primary']) ?>

<?php ActiveForm::end(); ?>

控制器:

public function actionSave(){        
  $model = new Answers();
  $request = \Yii::$app->request;
  foreach($request->post('Questions') as $key=>$value) {
    $model->load($request->post());
    $model->option_id = $value;
    $model->question_id = $key;
    $model->save();
  }
}

对不起,如果这是明显的问题,但我真的不明白该怎么做。谷歌搜索也没有帮助。如果您有任何想法,请分享

重生

您需要移动$model = new Answers();循环内部,因为您需要通过在 post 数组上循环来保存所有复选框,您应该每次都创建一个新对象,然后它将保存所有复选框。只需将您的代码更改为以下

public function actionSave(){
  $request = \Yii::$app->request;
  foreach($request->post('Questions') as $key=>$value) {
    $model = new Answers();
    $model->load($request->post());
    $model->option_id = $value;
    $model->question_id = $key;
    $model->save();
  }
}

此外,在处理相关或多条记录时,您应该使用事务块,例如在这种情况下,您应该保存所有记录或不保存所有记录,以防出现任何错误或异常,目前情况并非如此。如果异常或错误发生在第 4 个复选框上,您仍会保存前 3 个复选框值。尝试像下面这样包装代码

public function actionSave(){
  $request = \Yii::$app->request;

  //start transaction
  $transaction=Yii::$app->db->beginTransaction();

  try{

    foreach ($request->post('Questions') as $key => $value) {
        $model = new Answers();
        $model->load($request->post());
        $model->option_id = $value;
        $model->question_id = $key;
        $model->save();
    }        

    //commit the transaction to save the records
    $transaction->commit();

  }catch(\Exception $e){
      //rollback the transaction so none of the checkboxes are saved 
      $transaction->rollBack();
      //do your stuff intimate the user by adding the message to a flash and redirecting 
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使yii2 ActiveForm忽略先前提交的值?

来自分类Dev

在更新表单时如何在ActiveForm yii2中显示textarea值?

来自分类Dev

在更新表单时如何在ActiveForm yii2中显示textarea值?

来自分类Dev

如何通过变量在textarea Yii2 activeform中设置值?

来自分类Dev

如何从yii2中的activeform传递到pdf

来自分类Dev

同一ActiveForm yii2上的多个模型

来自分类Dev

yii2 ActiveForm的labelEx

来自分类Dev

yii2 ActiveForm的labelEx

来自分类Dev

如何为Yii2 ActiveForm dropDownList设置最大选择?

来自分类Dev

如何内嵌数组以在yii2 ActiveForm中的文本框中显示它?

来自分类Dev

yii2 ActiveForm字段占位符

来自分类Dev

yii2 ActiveDataProvider与ActiveForm结合使用?

来自分类Dev

Yii2 Activeform afterValidate问题

来自分类Dev

Yii2 ActiveForm验证规则消息

来自分类Dev

如何从多个无线电组动态获取检查值?

来自分类Dev

如何使用Yii2在mysql中保存自动生成的多个textInput数组值

来自分类Dev

如何在Yii 2.0框架中向ActiveForm添加类?

来自分类Dev

Yii2 - 在同一个 activeform 上使用同一个类的多个模型

来自分类Dev

如何在yii2 php中保护pdf密码

来自分类Dev

yii2无线电内联HTML帮助器

来自分类Dev

Yii2 如何在 afterSave 中重新保存模态

来自分类Dev

Yii2:如何在CheckboxList中显示选中的值

来自分类Dev

如何在yii2中传递密码的空值?

来自分类Dev

Yii 2 ActiveForm表单字段如何在复选框列表中实现“全选”选项?

来自分类Dev

如何在Yii 2中禁用activeform的客户端验证消息?

来自分类Dev

如何在Yii 2中跨Ajax请求使用ActiveForm实例?

来自分类Dev

Yii2 ActiveForm字段fileInput选项不起作用

来自分类Dev

Yii2 ActiveForm字段选项不起作用

来自分类Dev

Yii2 Pjax在ActiveForm和GridView上[正常工作]

Related 相关文章

  1. 1

    如何使yii2 ActiveForm忽略先前提交的值?

  2. 2

    在更新表单时如何在ActiveForm yii2中显示textarea值?

  3. 3

    在更新表单时如何在ActiveForm yii2中显示textarea值?

  4. 4

    如何通过变量在textarea Yii2 activeform中设置值?

  5. 5

    如何从yii2中的activeform传递到pdf

  6. 6

    同一ActiveForm yii2上的多个模型

  7. 7

    yii2 ActiveForm的labelEx

  8. 8

    yii2 ActiveForm的labelEx

  9. 9

    如何为Yii2 ActiveForm dropDownList设置最大选择?

  10. 10

    如何内嵌数组以在yii2 ActiveForm中的文本框中显示它?

  11. 11

    yii2 ActiveForm字段占位符

  12. 12

    yii2 ActiveDataProvider与ActiveForm结合使用?

  13. 13

    Yii2 Activeform afterValidate问题

  14. 14

    Yii2 ActiveForm验证规则消息

  15. 15

    如何从多个无线电组动态获取检查值?

  16. 16

    如何使用Yii2在mysql中保存自动生成的多个textInput数组值

  17. 17

    如何在Yii 2.0框架中向ActiveForm添加类?

  18. 18

    Yii2 - 在同一个 activeform 上使用同一个类的多个模型

  19. 19

    如何在yii2 php中保护pdf密码

  20. 20

    yii2无线电内联HTML帮助器

  21. 21

    Yii2 如何在 afterSave 中重新保存模态

  22. 22

    Yii2:如何在CheckboxList中显示选中的值

  23. 23

    如何在yii2中传递密码的空值?

  24. 24

    Yii 2 ActiveForm表单字段如何在复选框列表中实现“全选”选项?

  25. 25

    如何在Yii 2中禁用activeform的客户端验证消息?

  26. 26

    如何在Yii 2中跨Ajax请求使用ActiveForm实例?

  27. 27

    Yii2 ActiveForm字段fileInput选项不起作用

  28. 28

    Yii2 ActiveForm字段选项不起作用

  29. 29

    Yii2 Pjax在ActiveForm和GridView上[正常工作]

热门标签

归档