我使用Laravel 5.3构建测验,我想将结果存储在会话中。因此,每次用户提交测验响应时,结果都会添加到会话数组中。
例如,我想存储这样的答案:
answers = [q1 =正确,q2 =正确,q3 =不正确,......]
然后在测验结束时,我希望能够检索并列出结果,并且可能将正确的答案设置为绿色并且扭曲的答案为红色。
有人可以提供有关如何实现这一目标的任何指导吗?
答案 0 :(得分:1)
最简单的解决方案是将响应存储为JSON编码的字符串。
session([
'answers' => json_encode([
[
'q1'=>'correct',
'q2'=>'correct',
'q3'=>'incorrect'
]
])
]);
有更优雅的解决方案但是可以解决问题。
答案 1 :(得分:0)
您可以简单地使用session()
辅助函数来实现此
public function answer($questionId)
{
$question = Question::findOrFail($id);
if(!session()->has('question.answers')) {
session()->put('question.answers', [[ //Notice the 2 brackets. Y? Checkout below.
$question->id => request()->get('answer')
]]);
} else {
session()->push('question.answers', [ //pushing into array
$question->id => request()->get('answer')
]);
}
}
public function end($question)
{
$answers = session()->get('question.answers');
// Output: [ [1 => 'answer1'], [2 => 'answer2'] ]
$answers = array_flatten($answers);
// Output: [ 1 => 'answer1', 2 => 'answer2' ]
}