根据数据库记录创建yii2表单字段

时间:2015-12-15 00:15:58

标签: php yii2 yii2-advanced-app yii2-basic-app

我正在创建一个类似于online exam system的项目,其中教师创建问题并回答类型inputradio button等。我将这些记录保存在数据库和用户登录中并查看相应的输入类型的表格。

如何在用户表单上创建这些字段?我的数据库非常简单,如下所示

Questions       information
id              id
teacher_id      user_id 
subject_id      question_id
question        answer 
input_type
is_required

所以我遇到了一个问题,我怎么能在用户视图文件上创建这些字段?我应该只创建一个information模型的实例并使用数组打印字段吗?或者我应该创建information模型的不同实例,如下所示

foreach($modelInformation as $i=>$modelInformation){

   echo $form->field($modelInformation, "[{$i}]answer")->textInput();
}

这样的东西?或者有一些简单的方法可以做到这一点?我很困惑,因为我不知道如果我这样做,我怎么能给出验证?因为有些问题可以选择,其他问题必须回答。如果有任何示例项目可用于类似场景而不是指向我,我将继续工作。谢谢

2 个答案:

答案 0 :(得分:1)

可以使用html帮助程序执行此操作。假设您已定义了question和信息`模型之间的关系,您可以创建一个活动字段,并将字段类型作为文本参数传递,如下所示。

echo Html::activeInput($modelInformation->question->input_type, $modelInformation, 'answer');

要进行验证,您可能需要创建standalone validator并使用switch语句根据$model->question->input_type

的值更改验证

答案 1 :(得分:0)

我认为有很多方法可以创建该项目,这取决于客户想要什么或开发人员想要实现什么。 我建议您按照以下方式尝试:

  1. CMS模型:尝试制作一个管理面板,其中将显示所有问题 从数据库中你可以逐个选择问题来定义问题应该是客观的,描述性的等等,这将相应地在视图表格上生成问题。
  2. 如果您的问题每次都会被修复,而不是制作一个视图页面并根据您的选择定义哪个问题。但如果您更改问题,则每次都必须更改。 所以我建议尝试使用CMS模式,它会很好地自动化你的项目。