2016-01-20 74 views
0

我有两个php页面。第一个是chart1.php。在此页面中,我创建了一个在chartreport_getitems_form.php中定义的getitems_form表单对象,并处理来自该表单的submited值。这个代码是这样的:如何在moodle中获取选定表格的选项

<?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按钮来发送给chart1.php的值。 我添加一个jquery脚本到这个按钮,当这个按钮submit.this的工作是为了我可以在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'));  
} 

}

这两种选择的不同仅仅是第一个具有初始选项($安勤),但第二个($ S值)的initioal选项为空。 当我提交按钮,我想处理它们的价值。我可以选择的是有initioal选项($安勤)的价值,但对于另外一个我看到的错误:

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

所以我的问题是,为什么我不能得到“$ S值”的选项? 以及如何获得该选项?

谢谢

回答

1

你可以得到的只是初始选项中的选项。 您可以在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)); 
相关问题