Preguntas sobre los formularios

Preguntas sobre los formularios

by Santiago Nieto Carrera -
Number of replies: 2
Hola:

Quería modificar el formulario de la actividad quiz, de forma que además del parámetro "tiempo límite(timelimit)" se pueda definir otro llamado "tiempo limite mínimo". Este campo ha de tener un valor como mucho igual al valor del tiempo limite, por lo que si se ingresa uno mayor ha de salir un mensaje de error. quisiera saber como se puede hacer tal relación y donde definir el mensaje a mostrar.


Además estoy utilizando un checkbox para habilitar o no, unos campos. Quisiera saber como hago para guardar el valor que tomo este campo desde otros archivos, es decir, como guardo eso en la tabla de la base de datos. Estoy utilizando el archivo install.xml por lo que necesito utilizar el campo type y no se que tipo ponerle.
Un saludo y gracias.
Average of ratings: -
In reply to Santiago Nieto Carrera

Re: Preguntas sobre los formularios

by Santiago Nieto Carrera -
Al final no me fue necesario guardar el valor que lleve el campo del checkbox en la tabla. Ya tengo hecha la actividad tal como quería, solamente me falta poner la relación entre los tiempo límite y los mínimos y máximo, puesto que quiero poder prohibir el crear una actividad en la que el tiempo mínimo sea mayor que la del tiempo límite y que el tiempo máximo sea menor.
Un saludo.
In reply to Santiago Nieto Carrera

Re: Preguntas sobre los formularios

by Santiago Nieto Carrera -
He estado indagando y puedo utilizar la siguiente sentencia para poder realizar comprobaciones antes de enviar el formulario:
$mform->addRule(array('timelimitmin','timelimit','error tlim min', 'compare','<=');

El problema es que no me reconoce el parámetro timelimit. Este es uno que ya se definió en el quiz por defecto, pero tiene una peculariedad y es que se ha hecho un array y después se creó el elemento en lugar de añadirlo. Pongo el código:

$timelimitgrp=array();
        $timelimitgrp[] = &$mform->createElement('text', 'timelimit');
        $timelimitgrp[] = &$mform->createElement('checkbox', 'timelimitenable', '', get_string('enable'));
        $mform->addGroup($timelimitgrp, 'timelimitgrp', get_string('timelimitmin', 'quiz'), array(' '), false);
        $mform->setType('timelimit', PARAM_TEXT);
        $timelimitgrprules = array();
        $timelimitgrprules['timelimit'][] = array(null, 'numeric', null, 'client');
        $mform->addGroupRule('timelimitgrp', $timelimitgrprules);
        $mform->disabledIf('timelimitgrp', 'timelimitenable');
        $mform->setAdvanced('timelimitgrp', $CFG->quiz_fix_timelimit);
        $mform->setHelpButton('timelimitgrp', array("timelimit", get_string("quiztimer","quiz"), "quiz"));
        $mform->setDefault('timelimit', $CFG->quiz_timelimit);
        $mform->setDefault('timelimitenable', !empty($CFG->quiz_timelimit));

Como puedo hacer para poner que me haga la comparación entre el elemento 'timelimit' y el que yo he definido 'timelimimin'. He comprobado que la sentencia es correcta, ya que si en lugar de 'timelimit' uso 'timelimitmax' si me funciona.