есть событие ячейки таблицы:
$celloptions['onclick'] = 'document.location=\''.
$CFG->wwwroot.'/mod/'.$event['type'].'/view.php?id='.$event['cm']->id.'\';';
цель: прикрутить функцию javascript, которая будет с помощью ajax выполнять запрос "update" к БД, а по успеху выполнения ajax выполнять redirect по указанной ссылке...
версия moodle: 2.8.1+
СУБД: mySQL
Делаете страницу обработчик. Пример - \course\ajax\management.php
Делаете js-файл с функциями - пример \course\completion.js. Там есть функции handle_success и handle_failure для обработки ответа и ошибки. Там прописыывается компонент M.<имя модуля>. Ещё один пример в \rating\module.js
Для выполнения ajax вызова используется Y.io(адрес php-обработчика, cfg);
переменная Y изначально передается через функцию init
js-файл подключается и вызывается функцию init с помощью $page->requires->js_init_call('M.имя модуля.init');
Вызов js из php выполняется или засчёт навешивания обработчика на событие onclick, для этого используется функция on() элементов. Или путём прямого вызова M.имя модуля.функция обработчик.
Очень непонятно объяснил, но надеюсь что-то прояснится
Вызов js из php выполняется или засчёт навешивания обработчика на событие onclick, для этого используется функция on() элементов
вот тут не понял
написал вот такой код:
cellOnclick: function () {
var cfg = {
method: 'POST',
on: {
myOnclick: function() {
alert("success");
}
}
};
Y.ui(M.cfg.wwwroot + '/blocks/progress/querydb.php',cfg);
}
и он не работает, помогите пожалуйста... заранее спасибо
используйте конструкцию Y.all('имя класса').on('click', this.onClick)
Про обработчики подробнее тут http://yuilibrary.com/yui/docs/event/