我最近使用 Apostrophe CMS 启动了一个新站点,该项目中的一个功能将扩展 apostrophe-events 以拥有与每个事件相关联的“注册”用户列表。我能够向 apostrophe-events 模块添加一个新的 joinByArray 列,并且在编辑事件时它可以正常工作。
现在,我正在尝试向 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 不是函数。我应该把链接代码放在别处吗?
谢谢!