我正在从数据库字段中创建一个表单,因此我提取所有记录并循环并在 php.ini 的 foreach 循环中添加表单元素。问题是当我提交表单时没有发布元素,我得到的唯一返回是提交按钮:-
stdClass Object
(
[submitbutton] => Submit
)
这就是我创建元素的方式,这些元素都在屏幕上正确显示和运行,它只是在我提交时不会发布,但是如果我在 foreach 循环中没有它们,元素会发布,但我需要从动态创建它们数据库,有什么想法吗?
foreach($records as $log){
$inc++;
if($log->type == 0){
$mform->addElement('html', '<p>'.$log->leadin.'</p>');
$attributes = array();
$distractors = explode(',', $log->distractors);
$radioarray=array();
$count = 0;
foreach($distractors as $dis){
$count++;
$radioarray[] =& $mform->createElement('radio', 'radio', '', $dis, $count, array());
}
$mform->addGroup($radioarray, 'radioar'.$inc, '', array(' '), false);
}
else if($log->type == 1){
$mform->addElement('html', '<div>'.$log->leadin.'</div>');
$distractors = explode(',', $log->distractors);
$count = 0;
foreach($distractors as $dis){
$count++;
$mform->addElement('checkbox', 'check'.$count, $dis);
}
}}
完整的表格代码: -
class build_user_survey extends moodleform{
public function definition() {
global $CFG;
global $DB;
global $OUTPUT;
$mform =& $this->_form;
$errors= array();
$br = "<br />";
$select = '';
$records = $this->_customdata['thequestions'];
$inc = 0;
$attributes=array('rows'=>'10','cols'=>'80');
$mform->addElement('hidden', 'id');
$mform->setType('id', PARAM_INT);
$mform->addElement('hidden', 'viewpage');
$mform->setType('viewpage', PARAM_INT);
$mform->addElement('hidden', 'pickedsurvey');
$mform->setType('pickedsurvey', PARAM_INT);
$mform->addElement('hidden', 'questiontype');
$mform->setType('questiontype', PARAM_INT);
foreach($records as $log){
$inc++;
if($log->type == 0){
$mform->addElement('html', '<div>'.$log->leadin.'</div>');
$distractors = explode(',', $log->distractors);
$count = 0;
foreach($distractors as $dis){
$count++;
$mform->addElement('radio', 'radio'.$inc, '', $dis, $count, array());
}
}
else if($log->type == 1){
$mform->addElement('html', '<div>'.$log->leadin.'</div>');
$distractors = explode(',', $log->distractors);
$count = 0;
foreach($distractors as $dis){
$count++;
$mform->addElement('checkbox', 'check'.$count, $dis);
}
}
else if($log->type == 2){
echo "<script type='text/javascript'>alert('here');</script>";
$thename = 'answer';
$mform->addElement('textarea', $thename, $log->leadin, $attributes);
}
}
foreach($records as $log){
$mform->addElement('radio', 'radio', '', 'ioh;', 0, array());
}
$mform->addElement('textarea', 'answerWorking', '$log->leadin', $attributes);
$this->add_action_buttons($cancel = true, $submitlabel='Submit');
}
public function validation($data, $files) {
global $DB;
$errors= array();
if($data['id']) {
return true;
}
}
}