Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 如何通过用户代理切换布局_Elixir_Phoenix Framework - Fatal编程技术网

Elixir 如何通过用户代理切换布局

Elixir 如何通过用户代理切换布局,elixir,phoenix-framework,Elixir,Phoenix Framework,我正在用Phoenix框架创建一个网站 我想使用不同的布局和模板,这取决于用户是使用PC还是智能手机 所以,我想通过检查用户代理来切换布局和模板 检查用户代理和切换布局和模板的最佳方法是什么? 或者,你知道有什么有用的库可以做这件事吗?你可以在一个插件中轻松完成这件事。传递到您的插件的conn结构有一个:req\u headers键,该键将包含“用户代理”等头。您可以直接使用它,也可以使用类似解析库的方法对布局选择进行条件化。然后,您可以使用Phoenix.Controller.put\u la

我正在用Phoenix框架创建一个网站

我想使用不同的布局和模板,这取决于用户是使用PC还是智能手机

所以,我想通过检查用户代理来切换布局和模板

检查用户代理和切换布局和模板的最佳方法是什么?
或者,你知道有什么有用的库可以做这件事吗?

你可以在一个插件中轻松完成这件事。传递到您的插件的
conn
结构有一个
:req\u headers
键,该键将包含
“用户代理”
等头。您可以直接使用它,也可以使用类似解析库的方法对布局选择进行条件化。然后,您可以使用
Phoenix.Controller.put\u layout/2

例如,使用ua_inspector:

  def some_plug(conn) do
    ua = get_req_header(conn, "user-agent")
    case UAInspector.parse(ua).os.name do
      "iOS" -> Phoenix.Controller.put_layout(conn, "mobile")
      _ -> Phoenix.Controller.put_layout(conn, "desktop")
    end
  end