获取多行并使用yii显示为表单

时间:2011-06-05 09:50:59

标签: forms yii

我有一个以qID为主键的数据库表工作表(qID varchar(5),answer varchar(50),wsheetid varchar(5))。一个工作表有很多问题。

我想获取wsheetid = 1的所有问题并将其显示为表单,以便用户可以输入答案。 我想用数据库中的答案列检查用户输入的ans。

我怎么能在Yii中这样做。

尝试谷歌和yii指南,无法找到任何解决方案。任何建议都会有所帮助。

更新

我有以下视图,我需要将属性放入数组并显示表单。有一个更好的方法吗?对于activeTextArea,因为模型有数据,文本区域包含数据库中的数据,但我需要一个空白文本区域。

<div class="form">
<?php $form=$this->beginWidget('CActiveForm', array(
    'id'=>'wdetails-form',
    'enableAjaxValidation'=>false,
)); ?>
<?php echo CHtml::beginForm(); ?>
<?php foreach($questions as $i=>$questions): ?>
<?php $array = $questions->getAttributes(); 
 echo CHtml::activeLabel($questions,"[$i]question",array('label'=>"$array[question]"));
 echo CHtml::activeTextArea($questions,"[$i]answer",array('id'=>"$array[question_ID]"));
 endforeach; 
?>
</br> 
<?php echo CHtml::submitButton('Submit'); ?>
<?php echo CHtml::endForm(); ?>
<?php $this->endWidget(); ?>
</div>

并且在控制器中,我需要插入从上面的表单中获得的数据并插入到不同的表中(worksheetResults)。我需要将数据放入数组并使用Yii DAO,还是有更好的方法来实现这一点。

table worksheetResults(username,worksheetID,question_ID,submitted_ans)

2 个答案:

答案 0 :(得分:1)

我认为你应该有一个Worksheet模型,一个Worksheet控制器和一个Worksheet视图。

以下是控制器部分的骨架:

class WorksheetController extends CController
{
  public function actionQuestions()
  {
    $criteria = new CDbCriteria;
    $criteria->addCondition('(wsheetid = :id)');
    $criteria->params[':id'] = '1';
    $questions = Worksheet::model()->findAll($criteria);
    $this->render('questions_form', array('questions'=>$questions));
  }
  public function actionAnswers()
  {
    //check the contents of $_POST['Worksheet']
  }
}

答案 1 :(得分:0)

您是否使用Gii创建脚手架?这样可以获得模型和CRUD文件,然后您可以自定义外观和功能。如果您的数据模型是好的,这将节省您大量的时间,即使您最终重做表单视图,您仍然可以使用Yii来创建和维护模型和控制器类。

请参阅:http://www.yiiframework.com/doc/guide/1.1/en/topics.gii