Я пытаюсь создать простой блок 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;
}
}