7
如果我想創建一個模塊,其中包含可在每個模板中訪問的功能,並且可以使用該視圖的所有功能(創建標籤,使用路由器路徑等),那麼實現該功能的最佳方法是什麼?如何在Phoenix Framework中創建全局視圖?
簡而言之,我該如何創建一個全局視圖?
如果我想創建一個模塊,其中包含可在每個模板中訪問的功能,並且可以使用該視圖的所有功能(創建標籤,使用路由器路徑等),那麼實現該功能的最佳方法是什麼?如何在Phoenix Framework中創建全局視圖?
簡而言之,我該如何創建一個全局視圖?
你可以定義一個模塊(我把它放在傭工目錄)中有你的功能:
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
函數現在將在所有模板中可用。
我將不得不導入MyApp.Router.Helpers並在這個MyApp.SomeHelper中使用Phoenix.HTML來使用所有的視圖函數。 – JustMichael
這真的取決於你的功能是什麼樣子。如果他們使用'MyApp.Router.Helpers'和'Phoenix.HTML'中的函數,那麼你會的。或者你可以使用長名稱。例如。 'MyApp.Router.Helpers.user_path(conn,:index)' – Gazler
我明白了,非常感謝 – JustMichael