У меня есть страница, на которой пользователь отвечает на несколько вопросов с помощью пейджинга, и на последней странице он нажимает кнопку, которая сохраняет все его выборки в базе данных. Моя проблема заключается в том, как я могу динамически сохранить состояние кнопки проверки при переходе от страниц к последней странице, чтобы, когда пользователь нажимает кнопку возврата, он мог найти свой ответ проверки.
Вот мой контроллер
namespace App\Http\Controllers;
use DB;
use Auth;
use App\Test;
use App\TestAnswer;
use App\Topic;
use App\Question;
use App\QuestionsOption;
use Illuminate\Http\Request;
use App\Http\Requests\StoreTestRequest;
class TestsController extends Controller
{
/**
* Display a new test.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
// $topics = Topic::inRandomOrder()->limit(10)->get();
$questions = Question::inRandomOrder()->simplePaginate(1);
foreach ($questions as &$question) {
$question->options = QuestionsOption::where('question_id', $question->id)->inRandomOrder()->get();
}
/*
foreach ($topics as $topic) {
if ($topic->questions->count()) {
$questions[$topic->id]['topic'] = $topic->title;
$questions[$topic->id]['questions'] = $topic->questions()->inRandomOrder()->first()->load('options')->toArray();
shuffle($questions[$topic->id]['questions']['options']);
}
}
*/
return view('tests.create', compact('questions'));
}
/**
* Store a newly solved Test in storage with results.
*
* @param \App\Http\Requests\StoreResultsRequest $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$result = 0;
$test = Test::create([
'user_id' => Auth::id(),
'result' => $result,
]);
foreach ($request->input('questions', []) as $key => $question) {
$status = 0;
if ($request->input('answers.'.$question) != null
&& QuestionsOption::find($request->input('answers.'.$question))->correct
) {
$status = 1;
$result++;
}
TestAnswer::create([
'user_id' => Auth::id(),
'test_id' => $test->id,
'question_id' => $question,
'option_id' => $request->input('answers.'.$question),
'correct' => $status,
]);
}
$test->update(['result' => $result]);
return redirect()->route('results.show', [$test->id]);
}
}
Вот мой взгляд
@extends('website.layouts.front')
@section('content')
<!-- <h3 class="page-title">لازم</h3> -->
{!! Form::open(['method' => 'POST', 'route' => ['tests.store']]) !!}
<div style="margin-right:250px;">
<center>
<div class="panel-heading">
الاسئلة </div>
</center>
<?php //dd($questions) ?>
@if(count($questions) > 0)
<div class="panel-body">
<?php $i = 1; ?>
@foreach($questions as $question)
@if ($i > 1) <hr /> @endif
<div class="row" >
<div class="col-xs-12 form-group">
<div class="form-group">
<strong> .{{ $i }} السوال<br />{!! nl2br($question->question_text) !!}</strong>
@if ($question->code_snippet != '')
<div class="code_snippet" >{!! $question->code_snippet !!}</div>
@endif
<input
type="hidden"
name="questions[{{ $i }}]"
value="{{ $question->id }}">
@foreach($question->options as $option)
<br>
<label class="radio-inline">
<input
type="radio"
name="answers[{{ $question->id }}]"
value="{{ $option->id }}" >
{{ $option->option }}
</label>
@endforeach
</div>
</div>
</div>
<?php $i++; ?>
@endforeach
</div>
@endif
</div>
{{ $questions->appends($_GET)->links() }}
<div style="margin-right:500px;">
{!! Form::submit(trans('ادخال الاجوبة'), ['class' => 'btn btn-danger']) !!}
{!! Form::close() !!}
</div>
@stop
@section('javascript')
@parent
<script src="{{ url('quickadmin/js') }}/timepicker.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-ui-timepicker-addon/1.4.5/jquery-ui-timepicker-addon.min.js"></script>
<script src="https://cdn.datatables.net/select/1.2.0/js/dataTables.select.min.js"></script>
<script>
$('.datetime').datetimepicker({
autoclose: true,
dateFormat: "{{ config('app.date_format_js') }}",
timeFormat: "hh:mm:ss"
});
</script>
@stop