如何让 connect-flash 连接到 return 多条消息,或一条带有换行符的消息?
How do I get connect-flash to return multiple messages, or a single message with newline characters?
我正在使用 nodejs 构建一个应用程序。
我创建了一个表单,我正在处理用户输入的后端验证。基本上,我有一个 var,"messages",每次遇到输入错误时,我都会将错误附加到消息中。
var messages ="";
errors.forEach(function(msgObject) {
console.log(msgObject.message);
messages += msgObject.message + "\r\n";
})
(我也使用指示性 -- http://indicative.adonisjs.com/ -- 进行错误验证。它 return 是一个数组错误)
我return使用 connect-flash 向用户发送错误
req.flash("error", messages);
我正在使用连接闪存
https://www.npmjs.com/package/connect-flash
我的问题是 connect-flash 会忽略换行符。即,我得到类似的东西:
我希望每条错误消息都在单独的一行中。我似乎无法找到一种方法来实现这一点。有什么想法吗?
这是问题的一个更简单的版本:为什么 req.flash("errors", "hello \n goodbye") return
hello goodbye
而不是
hello
goodbye
您的原始 post 遗漏了一些可能会帮助您解决自己的问题的内容。
- 您使用什么模板语言来显示通知?是否转义换行符?
- 您应该改用 HTML 吗?所以
<br />
而不是 \n
.
- 为什么不按顺序使用多个
req.flash
来创建通知数组?
3:见下文
// Set a flash message by passing the key, followed by the value, to req.flash().
req.flash('info', 'Flash is back!')
req.flash('info', 'Another message!')
// Get an array of flash messages by passing the key to req.flash()
res.render('index', { messages: req.flash('info') });
由于我们有 array
条消息,您可以遍历 messages
数组以单独显示它们:
{% for message in messages %}<li>{{ message }}</li>{% endfor %}
你说得对,我忘记了我的 ejs 文件,它回答了我的问题。
我基本上添加了 HTML li 而不是换行符(以制作错误的项目符号列表)
errors.forEach(function(msgObject) {
console.log(msgObject.message);
messages += "<li>" + msgObject.message + "</li>";
})
if(messages != "") {
messages = "<ul>" + messages + "</ul>";
}
然后在我的 ejs 文件中有了这个
<div class="container">
<% if(error && error.length > 0) { %>
<div class="alert alert-danger">
<strong> <%- error %> </strong>
</div>
<% }
if(success && success.length > 0) { %>
<div class="alert alert-success">
<strong> <%= success %> </strong>
</div>
<% } %>
</div>
我将 <%= errors %> 替换为 <%- errors %>
实际上更好..
EJS 文件:
<div class="container">
<% if(error && error.length > 0 ) { %>
<div class="alert alert-danger">
<% if(error.length === 1) { %>
<strong> <%= error %> </strong>
<% } else { %>
<ul>
<% error.forEach(function(err) { %>
<li> <strong> <%= err %> </strong></li>
<% }) %>
</ul>
<% } %>
</div>
<% }
if(success && success.length > 0) { %>
<div class="alert alert-success">
<strong> <%= success %> </strong>
</div>
<% } %>
</div>
.js 文件
var messages = [];
errors.forEach(function(msgObject) {
messages.push(msgObject.message);
})
req.flash("error", messages)
它将像这样工作:
<% if (hasMessages()) { %><% messages().forEach(function(msg){ %>
<% if(msg.message.length > 1) { %>
<div class="alert fade in alert-<%- msg.type %>" data-alert="alert">
<a class="close" data-dismiss="alert">×</a>
<% msg.message.forEach(function(innerMsg){ %>
<%- innerMsg %> <br>
<% }) %>
</div>
<% } else { %>
<div class="alert fade in alert-<%- msg.type %>" data-alert="alert">
<a class="close" data-dismiss="alert">×</a>
<%- msg.message %>
</div>
<% } %>
我正在使用 nodejs 构建一个应用程序。
我创建了一个表单,我正在处理用户输入的后端验证。基本上,我有一个 var,"messages",每次遇到输入错误时,我都会将错误附加到消息中。
var messages ="";
errors.forEach(function(msgObject) {
console.log(msgObject.message);
messages += msgObject.message + "\r\n";
})
(我也使用指示性 -- http://indicative.adonisjs.com/ -- 进行错误验证。它 return 是一个数组错误)
我return使用 connect-flash 向用户发送错误
req.flash("error", messages);
我正在使用连接闪存 https://www.npmjs.com/package/connect-flash
我的问题是 connect-flash 会忽略换行符。即,我得到类似的东西:
我希望每条错误消息都在单独的一行中。我似乎无法找到一种方法来实现这一点。有什么想法吗?
这是问题的一个更简单的版本:为什么 req.flash("errors", "hello \n goodbye") return
hello goodbye
而不是
hello
goodbye
您的原始 post 遗漏了一些可能会帮助您解决自己的问题的内容。
- 您使用什么模板语言来显示通知?是否转义换行符?
- 您应该改用 HTML 吗?所以
<br />
而不是\n
. - 为什么不按顺序使用多个
req.flash
来创建通知数组?
3:见下文
// Set a flash message by passing the key, followed by the value, to req.flash().
req.flash('info', 'Flash is back!')
req.flash('info', 'Another message!')
// Get an array of flash messages by passing the key to req.flash()
res.render('index', { messages: req.flash('info') });
由于我们有 array
条消息,您可以遍历 messages
数组以单独显示它们:
{% for message in messages %}<li>{{ message }}</li>{% endfor %}
你说得对,我忘记了我的 ejs 文件,它回答了我的问题。
我基本上添加了 HTML li 而不是换行符(以制作错误的项目符号列表)
errors.forEach(function(msgObject) {
console.log(msgObject.message);
messages += "<li>" + msgObject.message + "</li>";
})
if(messages != "") {
messages = "<ul>" + messages + "</ul>";
}
然后在我的 ejs 文件中有了这个
<div class="container">
<% if(error && error.length > 0) { %>
<div class="alert alert-danger">
<strong> <%- error %> </strong>
</div>
<% }
if(success && success.length > 0) { %>
<div class="alert alert-success">
<strong> <%= success %> </strong>
</div>
<% } %>
</div>
我将 <%= errors %> 替换为 <%- errors %>
实际上更好..
EJS 文件:
<div class="container">
<% if(error && error.length > 0 ) { %>
<div class="alert alert-danger">
<% if(error.length === 1) { %>
<strong> <%= error %> </strong>
<% } else { %>
<ul>
<% error.forEach(function(err) { %>
<li> <strong> <%= err %> </strong></li>
<% }) %>
</ul>
<% } %>
</div>
<% }
if(success && success.length > 0) { %>
<div class="alert alert-success">
<strong> <%= success %> </strong>
</div>
<% } %>
</div>
.js 文件
var messages = [];
errors.forEach(function(msgObject) {
messages.push(msgObject.message);
})
req.flash("error", messages)
它将像这样工作:
<% if (hasMessages()) { %><% messages().forEach(function(msg){ %>
<% if(msg.message.length > 1) { %>
<div class="alert fade in alert-<%- msg.type %>" data-alert="alert">
<a class="close" data-dismiss="alert">×</a>
<% msg.message.forEach(function(innerMsg){ %>
<%- innerMsg %> <br>
<% }) %>
</div>
<% } else { %>
<div class="alert fade in alert-<%- msg.type %>" data-alert="alert">
<a class="close" data-dismiss="alert">×</a>
<%- msg.message %>
</div>
<% } %>