【问题标题】:How to render a view into a string in SailsJS?如何在 SailsJS 中将视图呈现为字符串?
【发布时间】:2023-03-20 20:40:02
【问题描述】:

在一个控制器中,我想渲染具有特定布局的特定视图以发送带有结果字符串的电子邮件,但我显然不需要向用户显示结果。有没有办法使用我用来渲染视图的 EJS 引擎来实现这一点?这是我稍微简化的控制器操作:

  setEmail: function(req, res) {
    var update = {
      activationToken: _getToken(),
      email: req.param('email')
    };

    Profile.update(res.locals.profile.id, update).then(function(profile) {
      res.redirect(profileUrl);
      mailer.sendActivationEmail(
        update.email,
        res.i18n('Подтвердите свой адрес электронной почты'),
        emailString); // <=== Here is where I need the string rendered from a view
    });
  },

【问题讨论】:

标签: sails.js ejs


【解决方案1】:

使用视图钩子

Profile.update(res.locals.profile.id, update).then(function(profile) {
  res.redirect(profileUrl);

  sails.hooks.views.render("viewname",profile, function(err,html){
     if(err) return console.log(err);

     mailer.sendActivationEmail(
       update.email,
       res.i18n('Подтвердите свой адрес электронной почты'),
       html
     );
    })

});

编辑:右回调

【讨论】:

  • 这很有趣!但是文档说钩子 API 仍然不稳定:beta.sailsjs.org/#/documentation/reference/Plugins/Hooks您能否提供一个链接到可用钩子的记录位置?
  • 是的,这是真的 - API 不稳定。那是因为洞帆框架仅在 0.10 beta(远离稳定的 1.0)。目前文档中没有可用的 Hooks 列表。你可以看看/node_modules/sails/lib/hooks
【解决方案2】:

我想我宁愿使用像这样的特定电子邮件模块:

https://github.com/niftylettuce/node-email-templates

哪些可以访问EJS模板

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 2016-10-10
    • 2013-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多