2015-09-24 6 views
7

すべてのテンプレートでアクセスできる機能を持つモジュールを作成し、ビューのすべての機能(タグの作成、ルータパスの使用など)を使用できるようにするには、これを達成する最良の方法は何ですか?Phoenix Frameworkでグローバルビューを作成する方法は?

簡単に言えば、グローバルビューを作成するにはどうすればよいですか?

答えて

15

あなたはそれにあなたの機能を持つモジュール(私はヘルパーディレクトリにそれを置くところ)を定義することができます:あなたは、その後view機能の下MyApp.Webに含めることができ

defmodule MyApp.SomeHelper do 

    def some_function do 
    #... 
    end 

end 

を:

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.SomeHelper'に' MyApp.Router.Helpers'をインポートし、 'Phoenix.HTML'を使用してすべてのビュー関数を使用できるようにする必要がありますか? – JustMichael

+0

本当にあなたの関数がどのように見えるかによって異なります。彼らが 'MyApp.Router.Helpers'と' Phoenix.HTML'の関数を使用している場合、あなたはそうなります。または、長い名前を使用することもできます。例えば。 'MyApp.Router.Helpers.user_path(conn、:index)' – Gazler

+0

ありがとう、ありがとう – JustMichael

関連する問題