控制器
public function getquestion($ids = null)
{
// 獲取試卷名稱
$now_exam_name=$this->model->where('id', $ids)->value('exam_name');
// 獲取試卷的題目
$nowtimus = Db::name('cms_exams_element')->where('exams_id', $ids)->column('question_id');
// 把題目放進數組
$question_obj = Db::name('CmsArchives');
$arr = $question_obj->where('id','in',$nowtimus)->select();
// halt($arr);
// $questions=[];
foreach ($arr as $k=>$v){
// halt($v);
// 解析每個selectdata數組
$arr[$k]['selectdata'] = json_decode($arr[$k]['selectdata'], true);
// halt( $arr[$k]['selectdata']);
$arr[$k]['answer']=explode(',',$arr[$k]['answer']);
}
$questions=$arr;
$typelist=["1" => "單選題", "2" => "多選題", "3" => "判斷題","4" => "填空題","5" => "簡單題","6" => "組合題"];
$this->view->assign("typeList", $typelist);
// halt($questions);
$this->view->assign("questions", $questions);
$this->view->assign("now_exam_name", $now_exam_name);
return $this->view->fetch();
}
視圖
<!--循環題目,我這里應該是循環文章-->
<!--name應該是行列數據,item應該是行數據,key表示行數-->
{foreach name='questions' item="vo" key="k"}
<div class="form-group">
這里顯示題型信息
<h4>第{$k+1}題:{$typeList[$vo['type']]}</h4>
</div>
<!--對行數據,再次進行循環-->
<div class="form-group">
<h5>題目:{$vo['title']}<br></h5>
{foreach name='$vo["selectdata"]' item="select"}
{if condition="$vo['type'] eq 2"}
<input type="checkbox" value="{$select['key']}"
{:in_array($select['key'],$vo['answer'])?"checked":""} disabled>
{$select['key']}、{$select['value']}<br>
{else/}
<input type="radio" value="{$select['key']}"
{:in_array($select['key'],$vo['answer'])?"checked":""} disabled>
{$select['key']}、{$select['value']}<br>
{/if}
{/foreach}
</div>
{/foreach}
問題,如何吧,所有的填空題放在一起
也就是如何,把題型相同的放在一起?
分析了一下,參考插件的數據結構,發現,他在控制器層,就已經,把question的數據結構做好了。
也就是,吧所有題型相同的,放在了一起。
所以,實現步驟如下:
1.重構控制器的questions數據
2.那就要重新循環新數據
一路使用halt()來進行,數據結構的判斷
最終的邏輯是,必須按照試卷的配置,來進行預覽題目,不然,配置就毫無意義!