这个问题真的让我头疼。
我正在为Moodle开发一个自定义等级导出插件,并对grade_export类进行了分类:
class grade_export_sitscsv extends grade_export {
...
我创建的表单设置了两个自定义变量,因此我实现了一个*process_form()*函数,然后它调用父类中的函数:
function process_form($formdata) {
$this->grade_item = preg_replace('/itemids'[([0-9]+)']/',''1',$formdata->grade_item);
$this->sits_assnum = $formdata->sits_assnum;
parent::process_form($formdata);
}
我可以看到这些实例变量是在我的*display_preview()*函数中设置的:
public function display_preview() {
echo("<h2>Do we need a preview?</h2>");
echo("<p> Grade item: ".$this->grade_item.", SITS num: ".$this->sits_assnum."</p>");
}
(例如,打印等级项目:7487,SITS编号:7)。
然而,当我尝试使用*print_grades()*函数中的变量时,它们没有被设置:
public function print_grades() {
global $CFG;
echo("Grade item: ".$this->grade_item.", SITS num: ".$this->sits_assnum."'n");
将等级项目:,SITS编号:打印到我的输出文件中。
如果有任何建议可以帮助我解决这个问题,我将不胜感激。
谢谢你的回答,Michael和mkaatman——在一位同事的帮助下,我终于解决了。
问题是,调用print_grades()的对象与调用display_preview(,并且从该数据实例化了一个新对象。
我只需要确保我的数据被写入第二个表单,然后传递给新对象。