/** * 顺序练习 * @param $type * @return string * @throws Exception */ public function actionNormal($type) { $session = Yii::$app->session; $user = $session->get('user'); $testTypeId = -1; //-1表示全部练习 $testTitle = "顺序练习"; if ($type == 'continue') { $currentNumber = TestLibrary::findCurrentNumber($user, $testTypeId); } elseif ($type == 'restart') { $currentNumber = CurrentTestLibrary::resetCurrent($user, $testTypeId); } else { throw new Exception("practice/normal type does not defined"); } //$testLibraries = TestLibrary::findByUserAndTestType($user,$testTypeId,50,$currentNumber); $testLibraries = TestLibrary::findAllByUserAndTestType($user, $testTypeId); if ($currentNumber >= count($testLibraries)) { //当前题号达到最大题号,重新从头开始 $currentNumber = 0; } $countNumber = count($testLibraries); if ($countNumber == 0) { //避免没有题目生成出题页面出错 $url = Url::to(['site/test-library-not-found']); header("Location:{$url}"); exit; } $majorJob = MajorJob::findNameByMajorJobId($user['majorJobId']); //将一些必要参数存入session,方便后续页面调用 $session->set('testLibraries', $testLibraries); //所有题目 $session->set('totalNumber', $countNumber); //总题数 $session->set('testTypeId', $testTypeId); //测试类型id $session->set('testTitle', $testTitle); //测试标题 $session->set('majorJob', $majorJob); //测试岗位 //取出特定的题目量,$testLibraries为引用 $startNumber = TestLibrary::takeOutSpecialNumber($currentNumber, $testLibraries); return $this->render('test', ['testLibraries' => $testLibraries, 'startNumber' => $startNumber, 'currentNumber' => $currentNumber]); }