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()來進行,數據結構的判斷

最終的邏輯是,必須按照試卷的配置,來進行預覽題目,不然,配置就毫無意義!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM