在moodle的新模块活动中使用表单

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.