如何将清单的检查值发布到数据库?

时间:2019-07-15 05:07:26

标签: php yii2 radio-button radio-group active-form

我正在尝试创建一个测验应用程序,其中包含许多存储在数据库中的MCQ问题。我成功地从Db获得了问题和选项并显示了它。

但是,当我尝试将检查后的值发布到Db时,它不起作用。

我在其中使用ActiveFormRadioList

所有数据均使用for循环从Db中获取。

此外,发布检查后的值时,我需要传递question_id

我有桌子

问题-问题表。

答案-我要在其中写入检查值的表。

选项-从中获得问题选项(a,b,c)的表。

答案控制器:

public function actionSave()
    {
        $model = new Answers;
        $request = \Yii::$app->getRequest();
        if ($request->isPost && $model->load($request->post())) {
            \Yii::$app->response->format = Response::FORMAT_JSON;
            return ['success' => $model->save()];
        }
        return $this->renderAjax('index', [
            'model' => $model,
        ]);
    }

    public function actionCreate()
    {
        $model = new Answers;
        $this->save($model);
    }


    protected function save($model)
    {
        if (isset($_POST['Answers'])) {
            $model->attributes = $_POST['Answers'];
            if ($model->save()) {
                $this->redirect(array('index'));
            }
        }
        $this->render('_form', compact('model'));
    }

这是视图:

<?php $form = ActiveForm::begin(); ?>
<?php for ($i=0; $i<count($questions); $i++): ?>    
    <div>
        <?= Html::encode("{$questions[$i]->title}") ?>
    </div>

    <?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_id')->radioList($options, ['name'=>'Questions['.$questions[$i]->id.']', 'separator' => '<br>' ])->label(false) ?>        
        </label>

<?php endfor; ?>

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

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

我希望当用户回答所有问题并按“保存”按钮时,它将把检查的值和question_id保存到Db中的表中。但是,现在它什么也不做,也不显示任何错误。

我是第一次工作,所以请您能帮我了解如何做吗?

1 个答案:

答案 0 :(得分:-1)

我们缺少模型代码,因为现在您可以这样做:

  1. 使用var_dump($request->post());die();
  2. 将帖子转储到操作中
  3. 检查值是否在帖子上。
  4. 检查字段名称是否在类的规则中。
  5. 检查帖子中的字段名称是否正确。