nswbmw / N-club

使用 Koa + MongoDB + Redis 搭建论坛系统

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请问你这个项目的flash是怎么传到ejs里的?

hezhongfeng opened this issue · comments

commented

我自己在使用koa2搭建类似你这个项目
目前遇到的问题是不知道怎么把flash和session传到ejs
找了下,有人这么做的
res.locals.flash = req.flash();就可以在ejs里面用flash了
但是ctx.res已经没有locals了~
看你的代码也不知道究竟在哪里重定向
在ejs里引用也应该和koa1不同~

commented

例如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>
    <% } %>
commented

我也成功了
先把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传进去
不知道你为什么不传进去也不会报错(或者说我没找到在哪里传的)