2016-02-25 5 views
1

Я использую Yii Framework 1.1.17, и сгенерировал три модели: Вопрос, AnswerOption и Response.Yii, поля формы для табличного ввода

Отношения:

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, 
    )); 
} 

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

Файл: ответ/_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.

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

ответ

0

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

Файл: ответ/_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; ?> 

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