0

我正在构建一个测验应用程序。我希望问题和可能的答案是随机的,这样当用户尝试相同的测验时,他会得到相同的问题,但顺序不同。我还想一次只显示一个问题(可能的答案),并且用户应该能够通过他的问题返回或前进。

我正在使用 Laravel 的分页来确保我一次向用户提出一个问题。

我的路线定义如下:

Route::get('questions/{exam}', 'QuestionController@getSingleExam')->name('questions-exam');

在控制器中我有:

public function getSingleExam(Exam $exam) {      
   $questions = Question::inRandomOrder()->where('exam_id', '=', $exam->id )->with(['options' => function($query) {
            $query->orderBy(DB::raw('RAND()'));
        }])->simplePaginate(1);

   return view('frontend.modules.question-wizard', ['questions' => $questions,'exam' => $exam]);
}

该视图提出了问题和可能的答案。问题是每次刷新页面时,我都会收到另一个问题(由于随机化功能)。当我单击下一个按钮并返回(使用分页箭头)时,我得到另一个随机问题。这是由于分页箭头再次调用路由,所以使用了控制器内部的随机函数。

我想改变这种行为并且:

  • 读取所有问题(以及每个问题的可能答案),一旦调用路线并显示页面,只要用户前进或后退问题,问题将保持相同的顺序。
  • 保持答案的状态,这样当用户返回或前进时,他选择的答案会被记住。

我相信这意味着我不能使用分页,对吧?关于如何做到这一点的任何其他想法?

4

0 回答 0