Yii, зацикливание полей формы для табличного ввода

Я использую Yii Framework 1.1.17 и сгенерировал три модели:
Вопрос, ответОпция и ответ.

Отношения:

Table: Question (list of questions)
id
text

Table: AnswerOption (list of possible answers, associated with question)
id
question_id
text

Table: Response (question and selected answer collector)
id
question_id
answer_option_id
text

Я пытаюсь создать форму и по общему признанию собирать ответы на все возможные вопросы.

Файл: ResponseController

public function actionCreate()
{
// load all questions and with it the possible answer Options
$questions = Question::model()->findAll();

// get number of questions
$count = Question::Model()->count();

$model = array();
$i = 1;

while ($i <= $count) {
$model[] = Response::model();
$i++;
}

if (isset($_POST['Response'])) {
//
}

$this->render('create', array(
'model' => $model,
'questions' => $questions,
));
}

Это та область, с которой у меня проблемы:

Файл: response / _form

<?php foreach($questions as $i=>$question): ?>

<?php echo CHtml::activehiddenField($question,"[$i]id"); ?> <?php echo $question['text']; ?>

<?php $options = CHtml::listData($question->answerOptions, 'id', 'text');?>

<?php echo CHtml::activeDropDownList(AnswerOption::model(), "[$i]text", $options, array('empty' => 'Select answer...')); ?>

<?php endforeach; ?>

Возможно, я заполнил свои вопросы и возможные ответы, но мне нужно проверить и сохранить результаты в $ model.

Кажется, я не могу найти способ эффективно решить эту проблему. Может ли кто-нибудь, пожалуйста, вести меня?

1

Решение

Мне удалось решить мою проблему «петли» путем:

Файл: response / _form

<?php $questions = Question::model()->findAll(); ?>
<?php foreach ($questions as $j=>$question): ?>

<div class="row">
<?php echo $form->labelEx($model["$j"], "[$j]question_id"); ?>
<?php echo $form->hiddenField($model["$j"], "[$j]question_id", array('value' => $question["id"])); ?>
<?php echo $question['text']; ?>
</div>

<div class="row">
<?php $options = CHtml::listData($question->answerOptions, 'id', 'text');?>
<?php echo $form->labelEx($model["$j"], "[$j]answer_option_id"); ?>
<?php echo $form->dropDownList($model["$j"], "[$j]answer_option_id", $options, array('empty' => 'Select answer...')); ?>
</div>

<?php endforeach; ?>

Надеюсь, это когда-нибудь пригодится кому-нибудь.

0

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

Других решений пока нет …

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