データベース フィールドからフォームを作成しているので、すべてのレコードを取得してループし、フォーム要素を php の 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;
}
}
}