I create a new form for a new activity module in moodle, this form is not in mod_form.php
form. This is my form:
// Inclusion de la classe dont on hérite.
require_once ($CFG->dirroot.'/course/moodleform_mod.php');
// Définition de notre classe qui hérite de moodleform (formslib).
class mod_pjbl_disscussion_class_form extends moodleform {
// Définition du formulaire
function definition()
{
$mform =& $this->_form;
/* Entête du formulaire */
$mform->addElement('header', 'header1',
get_string('header1', 'pjbl'));
/* Un champ de texte */
$mform->addElement('text', 'content',
get_string('content', 'pjbl'), array('size'=>'64'));
/* Ajout d'un contrôle de saisie. Ce champ est obligatoire. */
$mform->addRule('content', get_string('required'),
'required', null, 'client');
// Bouton enregistrement et annulation standard
$this->add_action_buttons();
}
// Validation du formulaire. Permet d'ajouter des contrôles de saisie supplémentaires et plus compliqués que avec addRule().
Now I call the class in disscusion.php
$mform = new mod_pjbl_disscussion_class_form('./discussion.php', null, 'post');
if ($mform->is_cancelled())
{
// Si le bouton 'annuler' du formulaire est pressé cette partie de code sera exécutée.
redirect('./view.php?id='.'15'.'&view=discussion.php','',0);
}
else if ($fromform=$mform->get_data())
{
// Cette partie de code est exécutée si les données insérées dans le formulaire ont validées tous les tests de vérification.
/* Prépare un objet de données à envoyer à la base de données
avec les données récupérées dans le formulaire ($fromform).
Les noms des champs de l'objet $data_object correspondent aux noms
des champs dans la table de la base de données de destination. */
$data_object = new stdClass();
$data_object->id =1;
$data_object->pjbl =2;
$data_object->name ='page 1';
$data_object->intro ='fgdfgdfgdfgd gdfgdg gdfgdfg dfgdfg dfg';
$data_object->introformat =2;
$data_object->content = $fromform->content;
$data_object->legacyfiles =1;
$data_object->legacyfileslast =3;
$data_object->display =2;
$data_object->displayoptions ='gdfgdf fgdfgd gdfgfd';
$data_object->revision =3;
$data_object->timemodified = time();
/* Envoye l'objet à la base de données */
$DB->insert_record('pjbl_presentation_page', $data_object);
/* Redirection */
$url = new moodle_url('/mod/pjbl/view.php', array('id'=>$cm->id));
redirect($url);
}
else
{
/* Cette partie de code est exécutée quand le formulaire est
envoyé mais que les données n'ont pas passées tous les tests de
vérification, le formulaire sera donc réaffiché. Ou alors c'est la
première fois que le formulaire est affiché. */
/* Mettez les données que vous souhaitez passer au formulaire dans
le tableau de données $toform. */
if(isset($toform))
{
$mform->set_data($toform);
}
/* Donne le focus au premier élément du formulaire. */
$mform->focus();
// Affiche le formulaire
$mform->display();
}
When I click to save changes or cancel I have these notices:
( ! ) Notice: Undefined variable: cm in C:\xampp\htdocs\moodle\mod\pjbl\discussion.php on line 21
( ! ) Notice: Trying to get property of non-object in C:\xampp\htdocs\moodle\mod\pjbl\discussion.php on line 21
I tried to declare $cm->id
but it not work.