我正在构建一个测验应用程序。我希望问题和可能的答案是随机的,这样当用户尝试相同的测验时,他会以不同的顺序呈现相同的问题。我还希望一次只显示一个问题(可能的答案),用户应该能够回过头来处理他的问题。
我正在使用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]);
}
该视图提出了问题和可能的答案。问题是,每次刷新页面时,我都会得到另一个问题(由于randomize函数)。当我点击下一个按钮并返回(使用分页箭头)时,我会得到另一个随机问题。这是因为分页箭头再次调用路径,因此使用控制器内的随机函数。
我想改变这种行为,并且:
我相信这意味着我不能使用分页,对吧?关于如何做到这一点的任何其他想法?