如何在Sails中发送带有res.redirect('/')
的Flash消息?
当我检查控制器中的某些条件时,我想重定向到另一个URL,传递一条flash消息。
我是Sails的新手,所以任何帮助都会受到赞赏。
控制器操作:
module.exports ={
index: function (req, res) {
if(req.param('key')){
req.flash('message', 'welcome key is present');
res.redirect('/view/');
} else {
req.flash('message', 'welcome key is not present');
res.redirect('/');
}
}
}
提前致谢。
答案 0 :(得分:17)
您的代码看起来很适合控制器。在您的视图中,您可以req.flash('message')
访问Flash消息,因此在.ejs文件中,例如<%- req.flash('message') %>
答案 1 :(得分:1)
对于任何带数据的重定向,我发现更好的方法是将http代码设置为307.它将使用post / put / delete数据重定向。
req.flash('message');
res.redirect(307, '/');
答案 2 :(得分:1)
另一种解决方案是在呈现重定向模板的路由中传递message参数。
所以让我们举个例子(稍加修改):
module.exports ={
index: function (req, res) {
if(req.param('key')){
req.flash('info', 'welcome key is present' );
res.redirect('/view/');
} else {
req.flash('info', 'welcome key is not present');
res.redirect('/');
}
}
}
然后在'view'的路线中,你会有这样的事情:
app.get('/view', function(req, res){
var messages = {};
if (typeof res.locals.messages.info != 'undefined'){
messages = res.locals.messages.info;
}
res.render('view.ejs', {
messages: messages
});
});
然后在你的view.ejs:
<% if (typeof messages != 'undefined' && messages.length > 0) { %>
<% for (var i in messages) { %>
<div class="alert alert-info">
<%= messages[i] %>
</div>
<% } %>
<% } %>
同样在您的主server.js文件中:
app.use(function(req, res, next) {
res.locals.messages = req.flash();
});