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

时间:2014-09-05 21:39:45

标签: php moodle

我在moodle中为新的活动模块创建了一个新表单,此表单不是mod_form.php形式。 这是我的表格:

// 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().

现在我在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();
}

当我点击保存更改或取消时,我有这些通知:

  

(!)注意:未定义的变量:第21行的C:\ xampp \ htdocs \ moodle \ mod \ pjbl \ discussion.php中的cm

     

(!)注意:尝试在第21行的C:\ xampp \ htdocs \ moodle \ mod \ pjbl \ discussion.php中获取非对象的属性

我试图声明$cm->id,但它不起作用。

0 个答案:

没有答案