我正在尝试创建一个测验应用程序,其中包含许多存储在数据库中的MCQ问题。我成功地从Db获得了问题和选项并显示了它。
但是,当我尝试将检查后的值发布到Db时,它不起作用。
我在其中使用ActiveForm
和RadioList
。
所有数据均使用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中的表中。但是,现在它什么也不做,也不显示任何错误。
我是第一次工作,所以请您能帮我了解如何做吗?
答案 0 :(得分:-1)
我们缺少模型代码,因为现在您可以这样做:
var_dump($request->post());die();