function QuizQuestionAnsweringForm::submitBack in Quiz 6.x
Same name and namespace in other branches
- 8.6 src/Form/QuizQuestionAnsweringForm.php \Drupal\quiz\Form\QuizQuestionAnsweringForm::submitBack()
- 8.5 src/Form/QuizQuestionAnsweringForm.php \Drupal\quiz\Form\QuizQuestionAnsweringForm::submitBack()
Submit handler for "back".
File
- src/
Form/ QuizQuestionAnsweringForm.php, line 371
Class
- QuizQuestionAnsweringForm
- The form used to deliver questions to users and capture their responses.
Namespace
Drupal\quiz\FormCode
function submitBack(&$form, FormStateInterface $form_state) {
// Back a question.
/* @var $quiz_session \Drupal\quiz\Services\QuizSessionInterface */
$quiz_session = \Drupal::service('quiz.session');
$quiz = $form['#quiz'];
$quiz_result = $quiz_session
->getResult($quiz);
$quiz_result
->setQuestion($quiz_session
->getCurrentQuestion($quiz) - 1);
// Handle going back to a question which is in a previous page.
$layout = $quiz_result
->getLayout();
$question = $layout[$quiz_session
->getCurrentQuestion($quiz)];
if (!empty($question->qqr_pid)) {
foreach ($layout as $question2) {
if ($question2->qqr_id == $question->qqr_pid) {
$quiz_result
->setQuestion($question2
->get('number')->value);
}
}
}
$form_state
->setRedirect('quiz.question.take', [
'quiz' => $quiz
->id(),
'question_number' => $quiz_session
->getCurrentQuestion($quiz),
]);
}