Estoy desarrollando un plugin que requiere de crear un formulario con varias páginas y tras mucho esfuerzo he logrado que la paginación funcione, pero no se como hacer para conservar los datos de páginas anteriores para poder enviar todos a la vez al finalizar el formulario. El código que tengo ahora mismo en el view.php es el siguiente:
<?php
require_once('../../config.php');
require_once($CFG->dirroot . '/mod/usercheck/classes/forms/form_page1.php');
require_once($CFG->dirroot . '/mod/usercheck/classes/forms/form_page2.php');
$id = required_param('id', PARAM_INT);
$cm = get_coursemodule_from_id('usercheck', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$page = optional_param('page', 1, PARAM_INT);
require_login($course, true, $cm);
$context = context_module::instance($cm->id);
$PAGE->set_url('/mod/usercheck/view.php', array('id' => $id, 'page' => $page));
$PAGE->set_title(format_string($cm->name));
$PAGE->set_heading(format_string($course->fullname));
echo $OUTPUT->header();
if ($page == 1) {
$mform = new form_page1(null, array('id' => $id));
if ($mform->is_cancelled()) {
redirect(new moodle_url('/course/view.php', array('id' => $course->id)));
} else if ($mform->is_submitted() && $mform->is_validated()) {
$data1 = $mform->get_data();
$params1 = array(
'id' => $data1->id,
'page' => 2
);
redirect(new moodle_url('/mod/usercheck/view.php', $params1));
} else {
$mform->display();
}
} elseif ($page == 2) {
$mform = new form_page2(null, array('id' => $id));
if ($mform->is_cancelled()) {
redirect(new moodle_url('/course/view.php', array('id' => $course->id)));
} else if ($mform->is_submitted() && $mform->is_validated()) {
$data2 = $mform->get_data();
//Aqui deberia guardar en base de datos los valores de $data1 y $data2, pero obviamente $data1 no existe en esta "ejecución" del codigo
redirect(new moodle_url('/course/view.php', array('id' => $course->id)), "Datos enviados, redirigiendo al curso", 10);
} else {
$mform->display();
}
}
echo $OUTPUT->footer();
Necesitaría poder acceder a los datos de ambos formularios antes de hacer la redirección de nuevo al curso.
Tambien necesitaría añadir navegación en ambos sentidos (es decir, poder volver atras en las páginas) sin perder las modificaciones de páginas posteriores.
por Maria Gutiérrez.