zoukankan      html  css  js  c++  java
  • fastadmin 如何使用foeach循环带有setadata的数据,并且让题型相同的,在一起输出

    控制器

      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()来进行,数据结构的判断

    最终的逻辑是,必须按照试卷的配置,来进行预览题目,不然,配置就毫无意义!

  • 相关阅读:
    vue-quill-editor富文本编辑器使用
    vue中this.$router.push()路由传值和获取的两种常见方法
    在 Vue.js项目中如何定义全局变量&全局函数
    vue中利用provide和inject实现页面刷新(无白屏)重载组件
    linux 发送get post命令
    java 反射结合hibernate-validator 注解校验对象数据合法性
    开发过程工具集
    java 创建文件夹及文件写入数据到excel
    java文件不存在就创建_Java中创建并写文件的5种方式【转载】
    java 字符串左补齐
  • 原文地址:https://www.cnblogs.com/cn-oldboy/p/13036342.html
Copyright © 2011-2022 走看看