如果我想创建一个模块,其中包含可在每个模板中访问的功能,并且我可以使用该视图的所有功能(创建标签,使用路由器路径等),那么实现该功能的最佳方法是什么? ?
简单地说,我如何创建全局视图?
答案 0 :(得分:17)
你可以定义一个模块(我将它放在helpers目录中),其中包含你的函数:
defmodule MyApp.SomeHelper do
def some_function do
#...
end
end
然后,您可以将其MyApp.Web
功能包含在view
下:
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
some_function
功能现在可用于所有模板。