请问你这个项目的flash是怎么传到ejs里的?
hezhongfeng opened this issue · comments
我自己在使用koa2搭建类似你这个项目
目前遇到的问题是不知道怎么把flash和session传到ejs
找了下,有人这么做的
res.locals.flash = req.flash();就可以在ejs里面用flash了
但是ctx.res已经没有locals了~
看你的代码也不知道究竟在哪里重定向
在ejs里引用也应该和koa1不同~
例如get登录界面的话,这里是直接返回页面
exports.get = function* () { yield this.render('signin'); };
那么为什么ejs里面没有报错~
<% if ($this.session.user) { %>
<a href="/logout" class="item">登出</a>
<% } else { %>
<a href="/signup" class="item">注册</a>
<a href="/signin" class="item">登录</a>
<% } %>
<% if ($this.flash && $this.flash.error) { %>
<div class="flash">
<div class="ui red message"><i class="close icon"></i><%= $this.flash.error %></div>
</div>
<% } %>
我也成功了
先把flash变量传进去await ctx.render('signin', {title: '登录界面',flash: ctx.flash.get()});
post验证之后在更新
if (data.password !== dbpassword) {
ctx.flash.set({error:'账户或密码错误',error1:'账户或密码错误111111111111'});
return await ctx.redirect('back',{flash: ctx.flash.get()});
}
这里比你的多了一步,就是需要在更新之前将flash传进去
不知道你为什么不传进去也不会报错(或者说我没找到在哪里传的)