Новые поля при создании курса

Новые поля при создании курса

от blaccyee blaccyee -
Количество ответов: 2

Здравствуйте, пытаюсь сделать дополнительное поле при создании курса.

В mdl_course создал колонку "duration", в файле edit_form.php добавил 

$mform->addElement('text','duration', 'duration','maxlength="254" size="50"');

$mform->setType('duration', PARAM_TEXT);

if (!empty($course->id) and !has_capability('moodle/course:changefullname', $coursecontext)) {

            $mform->hardFreeze('duration');

            $mform->setConstant('duration', $course->duration);

        }

Выгрузка из БД проходит нормально, но сохранение не работает. Кроме этого кода ничего больше не вносил, может, что-то где-то забыл? 

В ответ на blaccyee blaccyee

Re: Новые поля при создании курса

от blaccyee blaccyee -
Решил сам.
Решение:
В данном случае проблема была в ,'maxlength="254" size="50"'.
Удалив, все заработало.
Для людей, которым нужно будет добавить новые поля при создании / редактировании курса.
1. Открывает edit_form.php ->htdocs/course/edit_form.php
2. Добавление нового поля происходит в таком формате:
$mform->addElement('text','duration', 'Продолжительность');
$mform->setType('duration', PARAM_TEXT);
if (!empty($course->id) and !has_capability('moodle/course:changefullname', $coursecontext)) {
$mform->hardFreeze('duration');
$mform->setConstant('duration', $course->duration);
}

Скрин прилагаю
Приложение Безымянный.png
В ответ на blaccyee blaccyee

Re: Новые поля при создании курса

от blaccyee blaccyee -
Что делать, если даже после этого не работает?
Возможно (в моем случае было так), проблема в кэшировании столбцов базы данных.
Исправляем так:
1. Переходим сюда: /htdocs/lib/dml/mysqli_native_moodle_database.php
2. Ищем в файле public function get_columns($table, $usecache=true)
3. Вместо if ($usecache) { прописываем if (!$usecache) {
4. Сохраняем файл, заливаем на сервер, пробуем сохранить курс, после чего убираем восклицательный знак и снова заливаем файл на сервер.