Я пытаюсь добавить JS к моему типу вопроса … Итак, я прочитал, что следует использовать модули AMD, а модули YUI больше не рекомендуется использовать.
Я сделал все как в примере на: https://docs.moodle.org/dev/Javascript_Modules
Но когда я пытаюсь вызвать мой модуль из php:
$this->page->requires->js_call_amd('block_overview/helloworld','makeItBlue');
я получаю сообщение об ошибке в консоли (в Google Chrome):
No define call for block_overview...
Я также попробовал:
$this->page->requires->js_call_amd('qtype_mytype/helloworld','makeItBlue');
но я получил ту же ошибку …
Структура папки: Вопрос / тип / MyType / | --Amd / | --src | --helloworld.js | --build | --helloworld.min.js
Первый, конечно, не будет работать, так как он будет искать в файле blocks / Overview / amd / * файл javascript ‘helloworld.js’.
Второй должен работать, за исключением того, что в этом примере функция ‘makeItBlue’ не экспортируется, т.е. она недоступна за пределами модуля.
Доступны только те функции, которые являются частью объекта, возвращаемого модулем. В этом примере экспортируемый объект называется «приветствие», а содержащиеся в нем функции — «формальный» и «неформальный». Они на самом деле ничего полезного не делают, но их можно вызывать извне модуля.
Взгляните на PDF, приложенный к этому сообщению в блоге: http://learn1.open.ac.uk/mod/oublog/viewpost.php?post=164813
за действительно хорошее введение в использование модулей AMD в Moodle 2.9+.
Других решений пока нет …