这个问题真的让我头疼。
我正在为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 num:打印到我的输出文件中。
我希望有任何建议可以帮我解决这个问题。
答案 0 :(得分:0)
感谢你的回答,Michael和mkaatman - 我在同事的帮助下最终解决了这个问题。
问题是,正在调用 print_grades()的对象与调用 display_preview()时的对象不同,即使它是同一个类 - 来自 process_form()的值被写入中间页面中的另一种形式(作为&lt; input type =“hidden”... 元素),并且从该数据中实例化了一个新对象。
我只需确保将我的数据写入第二种形式,然后传递给新对象。