Недавно я запустил новый сайт с Apostrophe CMS, и одна из функций проекта будет расширять апостроф-события, чтобы иметь список «зарегистрированных» пользователей, которые связаны с каждым событием. Мне удалось добавить новый столбец joinByArray в модуль apostrophe-events, и он корректно работает при редактировании событий.
Теперь я пытаюсь добавить кнопку «Регистрация» в модуль apostrophe-events-pages, чтобы пользователи могли регистрироваться на событие со страницы каждого события. В настоящее время у меня есть рабочая конечная точка API, которую я создал с помощью этого кода:
(В файле lib / modules / apostrophe-events-pages / index.js)
module.exports = {
construct: function(self, options) {
self.route('get', 'register', function(req, res) {
// Validate things with the launder module
var name = self.apos.launder.string(req.body.name);
// Deliver a JSON response
return res.send({ status: 'ok', moreInfo: 'something' });
});
}
};
Эта конечная точка работает так, как ожидалось, но я застрял на добавлении кнопки со ссылкой на правильное действие во внешнем интерфейсе. Я создал кнопку, которая выглядит правильно в созданной мной перезаписи show.html, со следующим кодом:
(В lib / modules / apostrophe-events-pages / views / show.html)
{{ buttons.minor('Register for Field Trip', { action: 'register' }) }}
Не знаю, как добавить ссылку на действие регистрации. Я попытался добавить этот код в тот же файл index.js, что и выше:
(В lib / modules / apostrophe-events-pages / index.js)
self.registerEvent = function() {
var res;
self.api('register', {}, function(result) {
res = results;
});
};
var superBeforeShow = self.beforeShow;
self.beforeShow = function(callback) {
self.link('register', self.registerEvent);
return superBeforeShow(callback);
};
Но когда я открываю страницу события, возникает ошибка, в которой говорится, что self.link не является функцией. Стоит ли размещать код ссылки в другом месте?
Спасибо!