2015-09-24 40 views
7

如果我想創建一個模塊,其中包含可在每個模板中訪問的功能,並且可以使用該視圖的所有功能(創建標籤,使用路由器路徑等),那麼實現該功能的最佳方法是什麼?如何在Phoenix Framework中創建全局視圖?

簡而言之,我該如何創建一個全局視圖?

回答

15

你可以定義一個模塊(我把它放在傭工目錄)中有你的功能:

defmodule MyApp.SomeHelper do 

    def some_function do 
    #... 
    end 

end 

然後,您可以將其包含在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 

some_function函數現在將在所有模板中可用。

+0

我將不得不導入MyApp.Router.Helpers並在這個MyApp.SomeHelper中使用Phoenix.HTML來使用所有的視圖函數。 – JustMichael

+0

這真的取決於你的功能是什麼樣子。如果他們使用'MyApp.Router.Helpers'和'Phoenix.HTML'中的函數,那麼你會的。或者你可以使用長名稱。例如。 'MyApp.Router.Helpers.user_path(conn,:index)' – Gazler

+0

我明白了,非常感謝 – JustMichael

相關問題