1

私のカスタム プラグインでは、3 つのドロップダウンと 1 つのテキスト ボックスを使用しています。フォームを送信してvalidation($data)メソッドが呼び出されると、テキストボックスの値とともに状態ドロップダウンの値が取得されます。

他の 2 つのドロップダウンの値は返されません。何が欠けているのかわかりません。

これが私のコードです:

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;
}
}
4

1 に答える 1

0

フォーム検証またはデータ取得のどちらを探しているのか正確にはわかりませんが、データ取得に興味があり、上記で提供したコードが「filename_form.php」に記述されていると仮定しています。

validation() メソッドは、フィールドの値を取得するためではなく、サーバー側のフィールドに入力されたデータを検証するために使用されます。

フィールドの値を取得するには、「filename.php」という名前の別のファイルを作成し、フォームを表示するために「filename_form.php」を含める必要があります。Formslib の使用方法については、こちらを参照してください。

于 2013-03-29T10:00:59.710 に答える