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/Phoenix插件?_Elixir_Phoenix Framework - Fatal编程技术网

如何在路由器之前添加Elixir/Phoenix插件?

如何在路由器之前添加Elixir/Phoenix插件?,elixir,phoenix-framework,Elixir,Phoenix Framework,在路由器选择控制器/操作之前,是否有任何方法插入要运行的插头?我有一个应用程序将重定向到特定子域的根路径,而不管这些域上的当前路径如何。因此: sub.myapp.com/foo/bar应重定向到sub.myapp.com/ 但是,默认情况下,路由器说没有/foo/bar的路径,它会停止执行我的插件,这意味着它永远不会点击我的重定向 在路由器选择动作/控制器之前,是否有办法插入我的插头 (注意:我很确定我可以处理这个问题,但我只是好奇是否有更好的方法。)您的路由器在lib/my_app/endp

在路由器选择控制器/操作之前,是否有任何方法插入要运行的插头?我有一个应用程序将重定向到特定子域的根路径,而不管这些域上的当前路径如何。因此:

sub.myapp.com/foo/bar
应重定向到
sub.myapp.com/

但是,默认情况下,路由器说没有
/foo/bar
的路径,它会停止执行我的插件,这意味着它永远不会点击我的重定向

在路由器选择动作/控制器之前,是否有办法插入我的插头


(注意:我很确定我可以处理这个问题,但我只是好奇是否有更好的方法。)

您的路由器在
lib/my_app/endpoint.ex中被显式调用。在此之前,您可以在该文件中添加任何您喜欢的插件

您可以编写一个插件来处理重定向,并在调用路由器之前停止连接

defmodule HelloPhoenix.Endpoint do
  use Phoenix.Endpoint, otp_app: :hello_phoenix
  plug Plug.RequestId
  plug Plug.Logger
  ...
  plug CustomRedirectPlug # Add your plug here
  plug HelloPhoenix.Router
end