缺少必需的参数 (id)

A required parameter (id) was missing

我正在尝试将所选项目从一个 table 移动到另一个 table 并收到此错误:

A required parameter (id) was missing

$objs = array();
$objs[0] =& $mform->createElement('select', 'choosedepartments', get_string('Choose', 'dlist'), $table, $choices, 'size="25"');
$objs[0]->setMultiple(true);

$objs[1] =& $mform->createElement('select', "selecteddepartments", get_string('Select', 'dlist'), $schoices, 'size="15"');
$objs[1]->setMultiple(true);

$grp =& $mform->addElement('group', 'departmentgrp', get_string('Department list', 'dlist'), $objs, ' ', false);

//$objs[] =& $mform->addElement('submit', 'select', "Select");

$objs = array();
$objs[] =& $mform->createElement('submit', 'addsel', get_string('addsel', 'dlist'));
$objs[] =& $mform->createElement('submit', 'removesel', get_string('removesel', 'dlist'));
$objs[] =& $mform->createElement('submit', 'addall', get_string('addall', 'dlist'));
$objs[] =& $mform->createElement('submit', 'removeall', get_string('removeall', 'dlist'));
$grp =& $mform->addElement('group', 'buttonsgrp', get_string('selectedlist', 'dlist'), $objs, array(' ', '<br />'), false);

为什么都是“=&”行?除非您使用的是 PHP 4(它与最新版本的 Moodle 不兼容),否则所有对象都是通过引用传递的。

尚不完全清楚调用此表单的代码是什么,但我假设显示该表单的页面有一行 'required_param('id', PARAM_INT);'在它的某个地方。要解决此问题,您需要在表单中添加一个名为 'id':

的元素
$mform->addElement('hidden', 'id');
$mform->setType('id', PARAM_INT);

无论什么代码初始化表单,都需要使用 'setData' 为 'id' 传递正确的值。

例如

$id = required_param('id', PARAM_INT); // Something like this line should already exist in the code.
...
$form = new my_form(); // Something like this line should already exist in the code.
...
$form->setData(array('id' => $id));

之后,应该使用通常的 'if ($form->isCancelled())'、'if ($data = $form->getData())' 和 '$form->display()' 代码。