Как получить выбранные элементы выбранной формы в Moodle

У меня есть две страницы PHP. Первый — chart1.php. На этой странице я создаю объект формы getitems_form, который определен в chartreport_getitems_form.php, и обрабатываю поданные значения из этой формы. этот код похож на это:

<?php
require('../../config.php');
require_once('chartreport_getitems_form.php');
.
.
$getvariables=new getvariables;
if (!isset($getvariables->avalue)) {
$getvariables->svalue=array();
$getvariables->avalue=$coursegroups['name'];
$getvariables->id=$id;
}
//create form
$mform = new getitems_form(null,$getvariables);

//Form processing and displaying is done here
if ($mform->is_cancelled()) {
...
} else if ($fromform = $mform->get_data()) {

if(!empty($fromform ->submitbutton)){

echo "!!!!!!!","<pre>",var_dump($fromform ->Getfirstvalue),"</pre>";
echo "******","<pre>",var_dump($fromform ->Setfirstvalue),"</pre>";

}
// reset the form selections
$mform = new getitems_form(null,$getvariables);
} else { // first call
if (!isset($getvariables->avalue)) {
$getvariables->svalue=array();
$getvariables->avalue=$coursegroups['name'];
$getvariables->id=$id;
}
}

//===========
echo $OUTPUT->header();
$mform->display();
echo $OUTPUT->footer();

на второй странице это имя chartreport_getitems_form.php, у меня есть две формы с множественным выбором, которые я меняю с помощью двух кнопок «add1» и «remove1» с javascript для процесса на стороне клиента.
в конце этого кода у меня есть кнопка submition для отправки значения for на chart1.php.
я добавляю скрипт jquery к этой кнопке для выбора всех опций в этих двух селекторах, когда эта кнопка отправляет. Эта работа для этого, я могу получить значение этих опций в chart1.php.

<?php
require_once("{$CFG->libdir}/formslib.php");
require_once('lib/JEasyUI.php');

class getitems_form extends moodleform {
//Add elements to form
public function definition() {
global $PAGE, $CFG;
$easy_ui=new JEasyUI();
$block_name='chartreport';
$js_root="/report/{$block_name}/js/jquery-easyui";
$PAGE->requires->js("/report/{$block_name}/js/jquery-2.1.4.min.js",true);

$mform =& $this->_form;
$a=& $this->_customdata;

$avalue=$a->avalue;
$svalue=$a->svalue;
$courseid=$a->id;$mform->addElement('hidden', 'id',$courseid);
$mform->setType('id', PARAM_INT);

$mform->addElement('header', 'firstvalue', get_string('GetGroups','report_chartreport'));

$objs1[0] =& $mform->createElement('select', 'Getfirstvalue', get_string('Groups','report_chartreport'),$avalue,'size="15"');
$objs1[0]->setMultiple(true);

$objs1[1] =& $mform->createElement('select', 'Setfirstvalue', get_string('selectedGroups','report_chartreport'),$svalue,'size="15"');
$objs1[1]->setMultiple(true);$grp =& $mform->addElement('group', 'group1', get_string('Groups','report_chartreport'), $objs1, array(' ', '<br />'), false);
$mform->addGroupRule('group1', array('value' => array(array(get_string('maximumchars', '', 255), 'maxlength', 255, 'client'))));

//====
$script="function test(){
$('select[name*=\"Getfirstvalue\"]  option:selected').appendTo('select[name*=\"Setfirstvalue\"]');
return false;
}";
$objs2 = array();
$objs2[] =& $mform->createElement('submit', 'add1', get_string('add','report_chartreport'),
' onclick="test(); return false;"' );
$mform->addElement('html', html_writer::tag('script', $script));$scriptremove="function removeitem(){
$('select[name*=\"Setfirstvalue\"]  option:selected').appendTo('select[name*=\"Getfirstvalue\"]');
return false;
}";
$objs2[] =& $mform->createElement('submit', 'remove1', get_string('remove','report_chartreport'),
' onclick="removeitem(); return false;"');
$mform->addElement('html', html_writer::tag('script', $scriptremove));$grp =& $mform->addElement('group', 'buttonsgrp', get_string('selectedlist1','report_chartreport'), $objs2, array(' ', '<br />'), false);

$renderer =& $mform->defaultRenderer();
$template = '<label class="qflabel" style="vertical-align:top">{label}</label> {element}';
$renderer->setGroupElementTemplate($template, 'group1');

//---------------------
$scriptbutton= '$(document).ready(function(){
$("#id_submitbutton").click(function(){
$(\'select[name*=\"Getfirstvalue\"]  option\').prop(\'selected\', true);
});

$("#id_submitbutton").click(function(){
$(\'select[name*=\"Setfirstvalue\"]  option\').prop(\'selected\', true);
});

});';

$mform->addElement('html', html_writer::tag('script', $scriptbutton));
$this->add_action_buttons($cancel = true, $submitlabel=get_string('DrawChart','report_chartreport'));
}

}

разные из этих двух селекторов только первый имеют начальную опцию ($ avalue), но начальная опция второй ($ svalue) равна нулю.
когда я отправляю кнопку и хочу обработать их значение. я могу получить значение селектора, у которого были начальные параметры ($ avalue), но для другого я вижу ошибку:

Notice:  Undefined property: stdClass::$Setfirstvalue in C:\MoodleWindowsInstaller-latest\server\moodle\report\chartreport\Chart1.php on line 72
NULL

поэтому мой вопрос, почему я не могу получить опцию «$ svalue» ??
и как можно получить такие варианты?

Спасибо

0

Решение

Вы можете получить только те параметры, которые есть в начальных настройках.
вы можете сделать в chart1.php так:

$getvariables->svalue=array_map(function($input) { return ''; }, $coursegroups['name']);

и в chartreport_getitems_form.php напишите это:

$scriptdeleteinitialoptions='$(document).one(\'ready\', function () {
$("#id_Setfirstvalue").empty();
});';
$mform->addElement('html', html_writer::tag('script', $scriptdeleteinitialoptions));
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]