Обновление пользовательской формы Moodle

Я создал пользовательскую форму в Moodle и вставил данные в базу данных Moodle. Также я использовал большую часть поля в форме как автозаполнение, как показано ниже, например

$mform->addElement('autocomplete', 'SBName', get_string('searcharea', 'search'), $sbnames, $options);

Затем мне нужно обновить эту форму. Я получил запись из БД в виде массива. Затем мне нужно добавить значения БД в мою форму обновления, чтобы продолжить.

Здесь я не мог заполнить значения в форме редактирования для поля автозаполнения $mform->addElement('autocomplete.

Пожалуйста, помогите применить значения в форме редактирования.

Пожалуйста, дайте мне знать, есть ли способ сделать это в Moodle?


person thanigai    schedule 11.12.2020    source источник


Ответы (1)


Несколько замечаний: в Moodle имена переменных и полей базы данных должны быть в нижнем регистре, поэтому вам будет проще, если вы назовете поле «sbname» вместо «SBName».

Вы упомянули, что получили запись из базы данных в виде массива - ни одна из функций доступа к базе данных Moodle не возвращает запись в виде массива, все они возвращают записи в виде объектов (хотя они будут возвращать несколько записей в виде массива объектов) - пожалуйста, дважды -проверьте код, который вы используете для извлечения записи, если он достигает вас в виде массива.

Наконец, для инициализации значений при редактировании формы обычным методом является запись (вне самой формы):

$form = new name_of_form();
$form->setData($recordfromdatabase);

Где $recordfromdatabase — это объект записи, возвращаемый одной из функций $DB->get_record_*.

После этого вы можете использовать функцию $form-›getData() для получения отправленных значений и функцию $form-›display() для отображения самой формы.

В основном коде Moodle есть множество примеров, которым вы можете следовать для этого.

person davosmith    schedule 11.12.2020