Как настроить прослушивание щелчков для кнопок на Moodle? - PullRequest
0 голосов
/ 07 апреля 2019

Я пытаюсь создать простой блок Moodle, в котором есть один элемент редактирования текста, одна кнопка и одна метка.Когда пользователь вводит какой-либо текст в элемент редактирования текста и нажимает кнопку, введенный текст сохраняется в БД, страница перезагружается, сохраненный текст читается из БД и отображается на этикетке.Я использую рендерер для содержимого блоков, и я реализовал функции для сохранения и получения данных из БД.Как настроить прослушиватель щелчка для кнопки, как указать рендереру выполнять заданную функцию при нажатии кнопки?Кроме того, как получить текст, который набрал пользователь?Ниже мой код для рендерера и блока.

Блок:

class block_ivas_block extends block_base { 

public function init() {
    $this->title = get_string('pluginname', 'block_ivas_block');
}

public function get_content() {
    if ($this->content !== null) {
        return $this->content;
    }
    $text = $this->get_db_data();

    $renderer = $this->page->get_renderer('block_ivas_block');
    $this->content =  new stdClass();
    $this->content->text = $renderer->get_mcontent($text);

    return $this->content;
}

public function get_db_data(){
    $output = 'DB data:';

    global $DB;
    $records = $DB->get_records('block_ivas_block');

    foreach($records as $r){
        $output.= " ";
        $output.= $r->proba;
    }

    return $output;
}

public function save_db_data($data){
    global $DB;
    $record = new stdClass();
    $record->proba = $data;
    $DB->insert_record('block_ivas_block', $record);
}


public function btn_action(){
   // global $CFG;
    //$this->save_db_data($data);
   // $url = $this->page->url;
   // redirect($url);
}
}

Рендерер:

class block_ivas_block_renderer extends plugin_renderer_base {

public function get_mcontent($text) {
    $content =  html_writer::start_tag('div', array('class'=>'mstyle'));

    $content .= '<div>';
    $content .= html_writer::empty_tag('input', array('id' => 'inputtext', 'type' => 'text', 'name' => 'input'));
    $content .= html_writer:: tag('button','Submit', array('id' => 'button', 'type' => 'submit'));
    $content .= '</div>';

    $content .= html_writer:: tag('label',$text,array('class'=>'mstyle'));
    $content .= html_writer::end_tag('div');

    return $content;
}

}
...