小编Dom*_*nic的帖子

如何将插件加载的数据传递给 LiveView 组件

您好,我使用不同的域名来加载不同的数据集。我目前正在使用自定义插件根据主机名加载正确的域 ID。endpoint.ex例如,在我的路由器之前得到了这个:

plug WebApp.DomainCheck
socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]]
...
plug WebApp.Router
Run Code Online (Sandbox Code Playgroud)

defmodule WebApp.DomainCheck do
  import Plug.Conn
  @behaviour Plug

  def init([]), do: []

  def call(conn, _options \\ []) do
    domains = Model.load_allowed_domains()
    case Map.get(domains, conn.host) do
      nil ->
        conn
        |> resp(401, "Domain not allowed")
        |> halt()

      domain_id ->
        conn
        |> assign(:domain_id, domain_id)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

现在这可以正常工作,View因为我domain_id在每个项目中都有分配。但是如何将数据从插头domain注入到我的设备中呢?LiveView

目前,我已将相同的域检查代码复制到每个 LiveViews mount()页面中:

defmodule WebApp.WelcomeLive do
  use WebApp, :live_view

  @impl …
Run Code Online (Sandbox Code Playgroud)

elixir phoenix-live-view

4
推荐指数
1
解决办法
2395
查看次数

标签 统计

elixir ×1

phoenix-live-view ×1