当前位置:  开发笔记 > 编程语言 > 正文

将数据注入Phoenix的Action params

如何解决《将数据注入Phoenix的Actionparams》经验,为你挑选了1个好方法。



1> Gazler..:

有两个地方可以在Plug.Conn结构上存储键值对.分配和私人.通常,您应该使用assigns您的应用程序和private库.

此存储旨在供库和框架使用,以避免写入用户存储(:assigns字段).建议库/框架为密钥添加库名称前缀.

使用assign得到了你的用户:

def logged(conn, _opts) do
    case get_session(conn, :login) do
      nil -> conn
        ...
      login -> Plug.Conn.assign(conn, :current_user, login)
    end
  end

def someaction(conn, _params) do
  # do something with conn.assigns.current_user
end

如果current_user频繁使用控制器功能,请考虑覆盖action/2控制器中的功能.如文档中的"覆盖action/2自定义参数"中所述

def action(conn, _params) do
  apply(__MODULE__, action_name(conn), [conn, conn.params, conn.assigns.current_user)
end

def someaction(conn, _params, current_user) do
  # do something with current_user
end

为了完整.您可以使用Kernel.update_in/2更新params(我不会在用户身份验证的情况下),因为它conn.params是一个地图:

update_in(conn.params, fn (params) -> Map.put(params, :something, "value") end)

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有