Laravel:记住状态与分页

时间:2017-04-08 15:32:48

标签: laravel laravel-pagination

我正在构建一个测验应用程序。我希望问题和可能的答案是随机的,这样当用户尝试相同的测验时,他会以不同的顺序呈现相同的问题。我还希望一次只显示一个问题(可能的答案),用户应该能够回过头来处理他的问题。

我正在使用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函数)。当我点击下一个按钮并返回(使用分页箭头)时,我会得到另一个随机问题。这是因为分页箭头再次调用路径,因此使用控制器内的随机函数。

我想改变这种行为,并且:

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

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

0 个答案:

没有答案