这个问题真的让我伤脑筋。实例变量未设置在类的一个函数中
我工作的一个定制级出口插件的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");
...打印Grade项目:坐镇民:我的输出文件。
我希望有任何建议可以帮助我解决这个问题。
请将您要调用的代码发布到print_grades()。 – 2013-02-13 18:32:50
''print_grades()'在'process_form()'之后被调用吗? – mkaatman 2013-02-13 18:33:52
谢谢,所有。我在一位同事的帮助下找出了答案...... 我(愚蠢地)期待同一个对象在范围内一路通过。而是将数据写入中间页面的表单中,然后在提交表单后创建对象的新实例。我必须重写grade_export的get_export_params()方法(添加我的参数),然后将它们添加到我的export.php文件中,并确保它们传递给构造函数。 D'Oh! – robhogg 2013-02-13 19:54:04