Создать форму опроса в Yii2 с несколькими вариантами ответов

Я новичок в Yii, и был бы признателен за любую помощь.
Мне нужно создать страницу с несколькими вариантами голосования. Мои модели выглядят так:

PollQuestion:

id int
title varchar

PollAnswer

 id char  //one letter - answer option
title
question_id //FK pool_question(id)

PollResult

user_id int
question_id int //FK poll_question(id)
answers         //will be stored like A,B,C
indicated_answer //alternaive answer specified by user

Пример вопроса выглядит так:

What do you think about us?
(checkbox)A. Good
(checkbox)B.Bad
(checkbox)C.Other (indicate) (textbox goes here)

Я не уверен, правильно ли я это делаю, мой контролер:

public function actionSurvey($user_id)
{
$model = [new PollResult];
foreach($model as $model_item){
$model_item->user_id= $user_id;

if ($model_item->load(Yii::$app->request->post())) {
//only one item received, why??
}
}

return $this->render('survey', ['model' => $model]);
}

Посмотреть:

<?php $form = ActiveForm::begin(); ?>
<?php foreach(PollQuestion::find()->all() as $question) {?>
<?php foreach($model as $model_item) { ?>

<p><?=$question->title?></p>
<?= Html::activeHiddenInput($model_item  , "user_id"); ?>
<?= $form->field($model_item, 'answers')->checkboxList(ArrayHelper::map($question->pollAnswers, 'id', 'title')?>
<?= $form->field($model_item, 'indicated_answer') ->textInput()?>
<?php } }?>

<div class="form-group">
<?= Html::submitButton(Yii::t('app', 'Send'), ['class' => 'btn btn-success' ]) ?> </div>

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

Проблема в том, что в контроллере я получаю только один элемент в массиве. Я не уверен, что я делаю не так.

0

Решение

Верно, что возвращается одна запись модели. В своей форме вы создаете одну модель и передаете ее в форму.

public function actionSurvey($user_id)
{
$model = [new PollResult];
// ...
return $this->render('survey', ['model' => $model]);
}

Затем вы можете ожидать одну модель обратно.

Посмотрите на этот связанный вопрос о том, как вы можете решить эту проблему.
Использование списка флажков Yii2.0 для моделей отношений между родителями и детьми

0

Другие решения

Мое предложение, вам нужна дополнительная модель формы, чтобы сделать это.
Вы можете увидеть, как создать модель формы на http://www.yiiframework.com/doc-2.0/guide-input-forms.html.

Модель формы, которую вы создаете, по крайней мере, имеет следующие атрибуты:

  • ответы []
  • indicated_answer []

и вы можете сохранить входные данные от пользователя к этим атрибутам и сохранить их в вашей модели ActiveRecord.

1

По вопросам рекламы [email protected]