por ejemplo, insertar un campo llamado duración a continuación del campo Nombre corto.
¿Alguien puede decirme que debo modificar, o que es lo que debo hacer?
Además debo extraer información de la base de datos de moodle, este campo que se crea, ¿se insertará también en la tabla de cursos de moodle?
Gracias, un saludo.
Pero para eso puedes usar ek campo de periodo de vigencia de la matricula:
"http://docs.moodle.org/es/course/edit#Per.C3.ADodo_de_vigencia_de_la_matr.C3.ADcula
Período de vigencia de la matrícula
Esta opción especifica el número de días de que un estudiante dispone para matricularse en este curso.
Si se elige la opción, los estudiantes quedarán desmatricularse una vez haya transcurrido el período. Esto resulta muy útil para desarrollar cursos sin un principio o final especificados.
Si no se selecciona la opción, el estudiante permanecerá matriculado hasta que se le dé de baja manualmente, o hasta que la función de eliminar a estudiantes no activos entre en funcionamiento.
Gracias.
En las versiones de Moodle actuales, añadir campos a un fomulario es bastante sencillo, ya que hay fucniones que lo hacen de maravilla. Por ejemplo
En el fichero edit_form.php
// Esta linea añade un Elemento de tipo "text" (cuadro de texto" y establece sus propiedades como la longitud y el tamaño del texto interno.
$mform->addElement('text','idnumber', get_string('idnumbercourse'),'maxlength="100" size="10"');
Los parámetos de la función son:
'text': Tipo del campo;
'idnumber' : Nombre que le damos
get_string('idnumbercourse'): Recoge del fichero de idioma correspondiente (moodle.php), la cadena correspondiente al título.
El resto ya te los sabes
// Esta linea añade el icono del "?" que proporciona ayuda acerca del cuadro de texto que acabamo de crear
$mform->setHelpButton('idnumber', array('courseidnumber', get_string('idnumbercourse')), true);
// Esta linea establece el tipo del dato. En este caso, en la propia función "setType" dice:
PARAM_RAW means no cleaning whatsoever, it is used mostly for data from the$mform->setType('idnumber', PARAM_RAW);
html editor. Data from the editor is later cleaned before display using
format_text() function. PARAM_RAW can also be used for data that is validated
by some other way or printed by p() or s().
Puedes consultar estas y otras funciones de la API de moodle en:
http://xref.moodle.org/nav.html?index.html
Por otro lado, en el fichero edit.php, debes recoger ese valor y añadirlo al objeto que contiene los datos que se usarán para crear el curso. En este caso, es el objeto $data.
Fíjate en el fichero, hacia la línea 97, el código
//Si el curso no existe, lo crea con los valores almacenados en $data.
if (empty($course)) {
if (!$course = create_course($data)) {
print_error('coursenotcreated');
}
Por tanto, para que se almacene tu nuevo dato, deberías hacer "antes" de este código, algo como:
$data->codigo=$editform->nombredelcampo
"codigo" hace refencia al nombre del campo de la Base de Datos dónde almacenaremos el valor.
Espero que esto, al menos, te guíe hasta buen puerto.
Animo,
Hasta pronto,
Salu2
J. Raul (juagarc4)
Estas son las líneas que he añadido:
Archivo edit_from.php
$mform->addElement('text','idduration', get_string('iddurationcourse'),'maxlength="100" size="10"');
$mform->setHelpButton('idduration', array('courseidduration', get_string('iddurationcourse')), true);
$mform->setType('idduration', PARAM_RAW);
Archivo edit.php
$data->courseidduration=$editform->iddurationcourse;
Podrías ayudarme, muchísimas gracias.
Supongo que el campo está creado en la tabla de cursos de la base de datos.
Por cierto, esta línea:
$data->courseidduration=$editform->iddurationcourse;
deberia ser:
$data->courseidduration=$editform->idduration;
Respecto al fichero de ayuda, échale un vistazo a la función setHelpButton a ver qué parámetros debe recibir.
Hasta pronto,
Salu2
Gracias, un saludo
Ahora mismo acabo de hacer la prueba con el código que te indiqué. Ha funcionado correctamente y el dato deDuración se ha insertado adecuadamente en la Base de Datos.
Recuerda que en la tabla mdl_courses debes de crear un campo del timpo que necesites y que se llame igual que el nombre que le has puesto en:
$mform->addElement('text','idduration', get_string('iddurationcourse'),'maxlength="100" size="10"');
O sea, en este caso, 'idduration'.
Así te debería funcionar sin problemas.
Hasta pronto,
Salu2
Un saludo.
Hola Juan Raul,
Estoy realizando los pasos que muy gentilmente as compartido y aun no logro insertar los datos en mi base, podrias por favor darme una mano, muchas gracias.!!
Rodrigo
Me encuentro desarrollando un nuevo bloque y necesito saber como guardar en la base de datos si un checkbox ha sido seleccionado para luego pedir su valor
Re: Añadir campo en formulario de crear cursos
Gracias Juan Raúl, no sabes la gran ayuda que que obtuve !!!