我在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
,但它不起作用。