Quantcast
Channel: Cosas de Desarrolladores
Viewing all articles
Browse latest Browse all 2193

Persistencia de datos entre diversas páginas en un formulario en Moodle 4.3.

$
0
0
por Maria Gutiérrez.  

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.


Viewing all articles
Browse latest Browse all 2193

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>