2015-12-25 6 views
5

ほとんどすべてのコントローラーで以下の機能が必要です。 ElixirにモジュールのようなApplicationControllerはありますか?エリクサーフェニックスグローバルコントローラーヘルパーをどこに置くべきですか

これらはどこに置く必要がありますか?

def redirect_if_unauthorized(conn = %Plug.Conn{assigns: %{authorized: false}}, opts) do 
    conn 
    |> put_flash(:error, "You can't access that page!") 
    |> redirect(to: "/") 
    |> halt 
    end 

    def redirect_if_unauthorized(conn = %Plug.Conn{assigns: %{authorized: true}}, opts), do: conn 

答えて

7

行くための一つの方法として、あなたは別のモジュールを作成することができますし、controller機能でweb.exファイルにインポートします。このよう

defmodule MyApp.Web do 

# Some code... 

    def controller do 
    quote do 

     # Some code ... 

     import MyApp.CustomFunctions 

     # Some code ... 

    do 
    end 

# Some code... 

end 
+0

モジュールの配置場所に関する規則はありますか? – Chris

+0

@クリス私は確信していません、あなたはどこにいても構いません。おそらく 'web'フォルダにありますので、再ロードされます。 – JustMichael

+0

ありがとうございました。私はいくつかのコードをコントローラ/ヘルパーとビュー/ヘルパーに入れました。 – Chris

3

通常、これらはプラグ内だろうが、あなたのルーティングパイプラインに追加しました。

この例では、プログラミングフェニックスに使用される:

  • 彼らがそれを介しimport Rumbl.Auth, only: [authenticate_user: 2]
  • それら次いで管要求を介してそのルータのプラグを含むauthenticate_user機能
  • Rumbl.Authモジュールを定義 - pipe_through [:browser, :authenticate_user]
関連する問題