如何在Phoenix Framework中创建全局视图?

NoD*_*ame 8 elixir phoenix-framework

如果我想创建一个模块,其中包含可以在每个模板中访问的函数,并且我可以使用该视图的所有功能(创建标记,使用路由器路径等),那么实现该功能的最佳方法是什么?

简而言之,我如何创建全局视图?

Gaz*_*ler 17

您可以定义一个模块(我将它放在helpers目录中),其中包含您的函数:

defmodule MyApp.SomeHelper do

  def some_function do
    #...
  end

end
Run Code Online (Sandbox Code Playgroud)

然后,您就可以将其MyApp.Webview的功能:

  def view do
    quote do
      use Phoenix.View, root: "web/templates"

      # Import convenience functions from controllers
      import Phoenix.Controller, only: [get_csrf_token: 0, get_flash: 2, view_module: 1]

      # Import URL helpers from the router
      import MyApp.Router.Helpers

      # Use all HTML functionality (forms, tags, etc)
      use Phoenix.HTML

      # Import custom helpers
      import MyApp.SomeHelper
    end
  end
Run Code Online (Sandbox Code Playgroud)

some_function功能现在可用于所有模板.