eggjs / egg

🥚 Born to build better enterprise frameworks and apps with Node.js & Koa
https://eggjs.org
MIT License
18.88k stars 1.81k forks source link

如何设置 flash message 的问题 #1093

Closed MiYogurt closed 7 years ago

MiYogurt commented 7 years ago

假如设置到 ctx.locals 里面,通过 redirect 之后就没了。

假如放在 app.locals 里面,就变成全局的了,本来是一个用户的通知结果变成了全站的通知。

最后是放在 session、或者 cookie 里面,那么在哪个 hook 里面用完之后可以删除呢,而且没法调用其他控制器里面的方法。

然后对于模板渲染是不是可以添加一个类似于 laravel 的 old(‘username’),同样是 session falsh 的保存之前输入的一个东西。

atian25 commented 7 years ago

egg 不提供类似的插件,有需要的话,自己参考对应的插件写一个。

MiYogurt commented 7 years ago

哦。 @atian25 那有没有 hook 可以在请求完路由,对 session 进行处理,我看中间件都没有说是前置还是后置的。

atian25 commented 7 years ago

可以看下 Koa 的洋葱模型这块相关的内容。

https://eggjs.org/zh-cn/intro/egg-and-koa.html#middleware

Controller 只是一个特殊的 middleware 而已,处在洋葱的最里面。

MiYogurt commented 7 years ago

@atian25 谢谢了,我看了下 koa-flash 的源码,发现写在 next 后面就行了,通过缓存再之后根据 status code 302做一个判断,再挂上去就行了。

atian25 commented 7 years ago

嗯,简单封装就可以写个 egg-flash 插件了。