2013-03-22 42 views
1

在我的自定义插件中,我简单地使用了三个下拉菜单和一个文本框。当我提交表单并调用validation($data)方法时,我只是将状态值与文本框值一起下拉。没有返回另外两个下拉菜单的Moodle moodleform :: validation()

价值。我不知道我错过了什么。

这里是我的代码:

if (!defined('MOODLE_INTERNAL')) { 
    die('Direct access to this script is forbidden.'); /// It must be included from a Moodle page 
} 
require_once($CFG->libdir.'/formslib.php'); 

class ohio_addconfiguration_form extends moodleform { 

// Define the form 
function definition() { 

    $id = optional_param('id', 0, PARAM_INT); 

    $countries = array(); 
    $states = array(); 
    $counties = array(); 
    $cities = array(); 

    $mform =& $this->_form; 

    // Creating hidden variable id 
    $mform->addElement('hidden', 'id'); 
    $mform->setType('id', PARAM_INT); 

    // Creating header "Configuration" 
    $mform->addElement('header', 'configuration', get_string('ohio', 'local_ohio')); 

    /* Listing States */ 
    $states_result = $this->get_states("", "1", "id, state_name", "state_name ASC");  
    if($states_result) { 
     foreach($states_result as $key=>$state){ 
     $states[$state->id] = $state->state_name; 
     }   
    }  
    $states= count($states)?array(''=>get_string('select_state', 'local_ohio').'...') + $states :array(''=>get_string('select_state', 'local_ohio').'...'); 
    $mform->addElement('select', 'state_id', get_string('select_state', 'local_ohio'), $states); 
    $mform->addRule('state_id', get_string('required'), 'required', null, 'client'); 
    $mform->setType('state_id', PARAM_INT); 

    /* Listing Counties */ 
    $counties= array(''=>get_string('select_county', 'local_ohio').'...'); 
    $mform->addElement('select', 'county_id', get_string('select_county', 'local_ohio'), $counties); 
    $mform->addRule('county_id', get_string('required'), 'required', null, 'client'); 
    $mform->setType('county_id', PARAM_INT); 

    /* Listing Cities */ 
    $cities= array(''=>get_string('select_city', 'local_ohio').'...'); 
    $mform->addElement('select', 'city_id', get_string('select_city', 'local_ohio'), $cities); 
    $mform->addRule('city_id', get_string('required'), 'required', null, 'client'); 
    $mform->setType('city_id', PARAM_INT); 

    // Creating text box for School 
    $mform->addElement('text', 'school_name', get_string('school_name', 'local_ohio'), 'size="25"'); 
    $mform->setType('school_name', PARAM_TEXT); 
    $mform->addRule('school_name', get_string('required'), 'required', null, 'client'); 
    $mform->addRule('school_name', get_string('maximumchars', '', 100), 'maxlength', 100, 'client'); 

    $this->add_action_buttons(); 
} 

function validation($data) { 
    global $DB; 
    echo "<pre>"; 
    print_r($data); 
    exit; 
} 
} 

回答

0

我不知道你在寻找准确,无论是形式验证或数据检索,但我假设你感兴趣的数据检索和代码你上面提供的是用'filename_form.php'写的。

验证()方法被用来验证在服务器侧的字段中输入的数据,并且不获取字段的值。

要获得字段的值,你需要它来创建一个名为“filename.php”另一个文件,包括“filename_form.php”显示形式。 您可以参考here来使用Formslib。